2009-08-26 10 views
74

Ich versuche, das HTML5-Canvas-Element zu verwenden, um einige Bögen und Kreise zu zeichnen - das funktioniert perfekt in FF, aber IE8 scheint es nicht zu unterstützen.Wie kann ich das HTML5-Canvas-Element in IE verwenden?

Jetzt gibt es Javascript-Bibliotheken, die IE8 scheinen gut mit Canvas funktionieren. An example can be found here.

Ich habe ihre gesamte Quelle gelesen, aber ich kann nicht verstehen, wie sie Canvas Arbeit mit IE8 machen. Kann jemand bitte etwas Licht auf die Methode werfen?

Antwort

94

Die Seite verwendet excanvas - eine JS-Bibliothek, die das Canvas-Element mit dem VML-Renderer von IE simuliert.

Beachten Sie, dass in Internet Explorer 9, the canvas tag is supported natively! Weitere Informationen finden Sie unter MSDN docs

+0

Ok, danke :) –

+35

+1 für Googles Implementierung von Canvas für IE. Traurig zu sehen, 3rd Party-Einschränkungen in Ihrem Browser zu beheben :) –

4

Sie könnten das neu veröffentlichte Chrome Frame-Plug-in für IE verwenden, aber es erfordert, dass die HTML 5-Website das spezielle Meta-Tag enthält, das das Plug-in aktiviert.

http://code.google.com/chrome/chromeframe/

Chrome Frame scheint erkunden Leinwand (excanvas.js) zu verwenden.

2

Zur Zeit ist ExplorerCanvas die einzige Option, HTML5-Canvas für IE6, 7 und 8 zu emulieren. Sie haben auch recht mit seiner Leistung, die ziemlich schlecht ist.

Ich habe einen Partikel-Simulator gefunden, der den Unterschied zwischen echtem HTML5-Canvas-Handling in Google Chrome, Safari und Firefox gegenüber ExplorerCanvas im IE vergleicht. Die Ergebnisse zeigen, dass die wichtigsten Browser, die das Canvas-Tag unterstützen, etwa 20 bis 30 Mal schneller laufen als das emulierte HTML5 in IE mit ExplorerCanvas.

Ich bezweifle, dass jemand die Mühe der Erstellung einer Alternative gehen wird, weil 1) excanvas.js etwa so sauber codiert ist, wie es geht und 2) wenn IE9 veröffentlicht wird, unterstützen alle gängigen Browser schließlich das Canvas-Objekt. Hoffentlich werden wir bekommen IE9 innerhalb eines Jahres

Eric @ www.webkrunk.com

+0

Kann mir jemand sagen, was mit "langsam" gemeint ist? Meinst du, dass der Browser häufig nicht mehr reagiert, etwa so, als würde er hängen bleiben, oder dauert das Laden der Seiten sehr lange, weil jede Seite die 'excanvas.js'-Datei laden muss, die ziemlich schwer ist (oder?)? – SexyBeast

+0

excanvas.js ist nicht zu groß. Das Problem besteht eher in der möglichen maximalen Framerate in Canvas-basierten Animationen. – nullability

8

Sie können fxCanvas versuchen: https://code.google.com/p/fxcanvas/

Es implementiert fast alle Canvas-API in Flash-Shim.

+1

Das bekommt meine Stimme wegen der abscheulichen Leistung von Exkanvas. Die Bibliothek hat ein paar Probleme, aber in meinen realen Tests kam sie Flashcanvas in Bezug auf Leistung und Stabilität voraus. – Aaronaught

+0

Gibt es eine neue Version davon? Der Link ist gebrochen – Colbs

+0

https://code.google.com/p/fxcanvas/ IE 5.5+ mit Ausnahme von IE 9. – Stefan

0

Ich habe gerade flashcanvas verwendet, und ich habe das funktioniert. Wenn Sie auf Probleme stoßen, lesen Sie einfach die Vorbehalte und was nicht. wenn Sie Canvas-Elemente erstellen Besonders dynamisch, müssen Sie sie explizit initialisieren:

if (typeof FlashCanvas != "undefined") { 
    FlashCanvas.initElement(canvas); 
} 
2

Wenn Sie IE8 verwenden müssen, können Sie diese JavaScript-Bibliothek für Vektorgrafiken versuchen. Es ist so, als würden die "Canvas" - und "SVG" -Inkompatibilitäten von IE8 gleichzeitig gelöst.

Raphaël

Ich habe nur versuchen, es in einem schnellen Beispiel und es funktioniert einwandfrei. Ich weiß nicht, wie lesbar der Quellcode ist, aber ich hoffe, es hilft dir. Wie sie auf ihrer Website sagten, ist die Bibliothek mit sehr alten Entdeckern kompatibel.

Raphaël unterstützt derzeit Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ und Internet Explorer 6.0+.