Ich denke, ich habe den Trick zu diesem gefunden. IE weiß nicht, was ein "Canvas" ist, also wenn Sie ein Canvas-Element mit Ihrem Javascript erstellen, funktioniert es nicht.
Andere Beispiele Ich habe gesehen tun, um ihre Leinwand zu erstellen:
var el = document.createElement('canvas');//this doesn't work in IE
Also der Trick ist, nur IE zu täuschen, indem stattdessen etwas legal und den Aufruf der Leinwand Initialisierung auf sie zu schaffen.
I verwendet Jquery eine Ajax-GET für diesen Block von HTML zu tun, die ich dann in das DOM eingefügt:
<div id="canvasholder">
<canvas id="mycanvas" width="1024" height="768" style="width:1024px;height:768px"></canvas>
</div>
Im Javascript nach dem Ajax-Aufruf abgeschlossen ist und die HTML eingefügt wird, kann ich meine Canvas-Initialisierung. Dies ist nur der interessante Ausschnitt aus meiner init-Funktion.
...
canvas = $('#mycanvas').get(0);//get dom element from jquery
if(!canvas.getContext)//function doesn't exist yet
{
//we're in IE if we reach this block
//otherwise getContext already exists
$('#canvasholder').empty();
//add #mycanvas as a div instead of a canvas
//you could use document.createElement('div') instead of jquery
$('#canvasholder').append(
'<div id="mycanvas" width="1024" height="768"></div>');
canvas = $('#mycanvas').get(0);
if(typeof G_vmlCanvasManager != 'undefined')
{
canvas = G_vmlCanvasManager.initElement(canvas);
}
}
//now you're set up to draw!
context = canvas.getContext("2d");
...
Dies funktioniert jetzt für mich in Firefox und IE7.
Ich habe diese Lösung bereits versucht, aber es hat nicht mit IE8 funktioniert ...! – user192318
Welche Version von Exvanvas verwendest du? Anscheinend hat sich VML in IE8 geändert, also brauchst du mindestens rev. 43, um es zu unterstützen. Sie könnten auch versuchen, den IE7-Kompatibilitätsmodus mit dem X-UA-kompatiblen Header/Metatag zu aktivieren. –