30 Stimmen

jQuery dynamische Canvas-Erstellung, $ctx.getContext ist keine Funktion

Wenn ich versuche, dies in jQuery auszuführen, erhalte ich $ctx.getContext is not a function in Firebug.

var $ctx = $( '<canvas />', {width:'100', height:'100'} )
$widget.append($ctx)                                     
$ctx.getContext('2d')                                    

Haben Sie eine Idee, warum ich diesen Fehler erhalte? Wie kann ich ein Canvas-Element dynamisch erstellen und initialisieren?

64voto

Scott Evernden Punkte 37117

$ctx ist ein jQuery-Objekt. verwenden $ctx[0].getContext('2d') um den Kontext zu erhalten

0 Stimmen

var $ctx = $( '<canvas />', {width:'100', height:'100'} )[0].getContext('2d')

0 Stimmen

Das würde $ctx den Canvas-Kontext zuweisen, die sowohl verwirrend ist und nicht, ich glaube, was Evan geht für... er muss das Ergebnis des getContext()-Aufrufs tho sammeln - so Sie dort richtig sind...

2 Stimmen

@Evan, du hast den append-Schritt übersprungen .. für einen einzelnen Liner versuche $( '<canvas />', {width:'100', height:'100'} ).appendTo($widget)[0].getContext('2d') aber jetzt haben Sie keine Variable, die auf Ihr Jquery-Objekt verweist

2voto

Castrohenge Punkte 7816

Wenn Sie Excanvas verwenden, müssen Sie die folgenden Einstellungen vornehmen, damit es im IE funktioniert.

var canvas = $ctx[0];

if (canvas.getContext == undefined) {
    return G_vmlCanvasManager.initElement(canvas).getContext("2d"); 
}

return canvas.getContext('2d')

-6voto

Peter Punkte 9

Als Erstes müssen Sie überprüfen, ob die folgende Zeile am Anfang des HTML-Dokuments vorhanden ist.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN">

diese Zeile als Bedingung für eine Browser-Rendering-Richtlinie aus.

2 Stimmen

Was hat das mit der Frage zu tun?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X