2009-08-14 6 views
10

Dieser wirklich verwirrt mich, da der Code völlig harmlos aussieht.Javascript Fehler in IE8: Nicht implementiert

IE8 stoppt die Ausführung des Skripts mit einer Nachricht:

Nicht implementiert. map.js Zeile: 66 Zeichen: 5

Hier ist ein Schnipsel aus dem Code:

63 if(data.map[x] !== undefined && data.map[x][y] !== undefined) { 
64    
65 left = (x - data.dim.x_min)*32 + 30; 
66 top = (data.dim.y_max - y)*32 + 30; 
67 
68 /* do stuff */ 
XX } 

Debug-Informationen: x: 263 data.dim.x_min: 263 y: 172 data.dim. y_max: 174

Daten sind Objekte, die vom JQuery Ajax-Aufruf zurückgegeben werden. Dies funktioniert in Firefox 3.0 und 3.5, Safari 4.0.2 und ich habe diesen Fehler nur beim Betrachten der Seite in IE8 gefunden. Das Erzwingen von IE8 in IE7-Modus macht den Fehler nicht weg.

Ich habe nicht IE7 zu debuggen, aber ich habe einen Tester sagen, dass es auch nicht in IE7 funktioniert.

+0

Es sieht richtig ... Ich bin auch zu wissen, interessiert, warum dies nicht funktioniert. Können Sie Schritt für Schritt debuggen? –

Antwort

20

Die im Code verwendete Variable 'top' ist ein Objekt vom Typ DispHTMLWindow2 (äußerstes Fensterobjekt), das bereits von den Browsern verwendet wird und den Konflikt verursacht, da dieses Objekt nicht das Ziel der Zuweisungsoperation sein kann. Es scheint, dass Firefox und Safari dies ignorieren, während der IE Scripten das nicht überschreiben lässt.

Lösungen:

1) Erklären Sie oben Sie als lokale Variable verwenden, es ist Umfang zu definieren, wo es verwendet wird.

2) Benennen Sie die Variable in etwas um, das nicht mit diesem vordefinierten globalen Konflikt in Konflikt steht.

Description of other variable names you shouldn't use

+4

Hilfreichste Fehlermeldung seit "Operation Aborted" – Triptych

+0

Lösung 1 funktionierte für mich. Vielen Dank – user427969

2

IE 8 hat einen großen Javascript-Debugger. Möglicherweise möchten Sie einen Haltepunkt irgendwo vor dem Fehler hinzufügen und den Code durchgehen, um zu sehen, ob etwas mit den Daten nicht stimmt. IE8 ist wählerisch mit abschließenden Kommas in Listen, aus denen Sie möglicherweise nur den Fehler erhalten. Sie können den Debugger mit F12 aufrufen, auf Skript klicken und Debuggen starten. Sie können einen Unterbrechungspunkt hinzufügen, indem Sie auf den Rand klicken, an dem sich die Zeilennummern befinden.

+0

Der F12 Kommentar war praktisch für mich. Ich habe mich gefragt, wie ich etwas im IE bekomme, das wie Firebug funktioniert, wenn auch nur die Grundlagen. – Belrog

Verwandte Themen