2012-03-26 4 views
2

Ich teste eine Website aus, die in Firefox (Win/Mac), Chrome (Win/Mac) und Safari gut läuft. Ich habe leider Schwierigkeiten mit dem Internet Explorer. Ich erhalte die folgende Fehlermeldung:IE lädt keine Seite mit Javascript und Raphael

SCRIPT65535: Unexpected call to method or property access. 
raphael-min.js, line 8 character 64961 

ich einen Blick auf die Debug-Ausgabe gemacht habe, die mich nur auf einen Teil sieht aus wie der Raphel Bibliothek nimmt:

c=a.getScreenCTM()||a.createSVGMatrix() 

ich gesucht habe diese Fehlermeldung online, aber ich verstehe nicht, welche Lösung für diesen Fall relevant ist, da ich keine Ahnung habe, was das Problem verursacht. Ich benutze auch die jQuery-Bibliothek. Gibt es irgendwelche Tests, die ich tun kann, die mir mehr Informationen über die Quelle des Problems geben können?

+0

Jede Chance, weiter zu erklären Sie können einen Link posten oder eine Geige erklimmen, die das Problem reproduziert? Auch welche Version von IE testen Sie gegen? – peteorpeter

+0

Versuchen Sie, die nichtminimierte Raphael-Bibliothek zu verwenden. es wäre einfacher, eine Vorstellung vom Kontext zu bekommen. – Steve

+0

Welche Version von Internet Explorer? – Andrew

Antwort

3

Ich fand heraus, dass es ein Problem mit der Komprimierung (der js-Datei) ist. Ich hatte genau das gleiche Problem und ich war auf der Suche nach einer Lösung. Erraten Sie, was? Ich habe es mit der unkomprimierten Raphael-Datei versucht und voila! Keine weiteren Probleme. Komprimierte Datei braucht eine Optimierung, so scheint es.

+0

Vielen Dank für dieses Feedback: In meinem Fall löste die Verwendung der unkomprimierten Version das Problem, das auf IE9 auftritt. –

+0

Gut zu wissen, das Problem (und die Lösung) war das gleiche. Ich hoffe, dass eine neuere komprimierte Version mit diesem Problem bald hochgeladen wird. – inhan

5

Ich habe gerade gefunden, wie man das patchen, um die komprimierte Version von Raphael zu behalten.

ersetzen (Sie das Koma nicht vergessen):

c=a.getScreenCTM()||a.createSVGMatrix(), 

Damit (Dont't den Endraum vergessen):

c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(e){c=a.createSVGMatrix()};var 

funktioniert gut! :)


Means:

  1. c;: Deklaration der Variablen C, und den ersten Befehl stoppen.
  2. try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(e){c=a.createSVGMatrix()};: unsere Anweisung von einem try/catch umgeben, IE Fehler zu vermeiden
  3. var + ein Raum: (Sie den Raum nicht vergessen!) Ermöglicht es uns, variable