2009-08-14 11 views
10

Ten naprawdę mnie zastanawia, ponieważ kod wygląda zupełnie nieszkodliwie.Błąd Javascript w IE8: Nie zaimplementowano

IE8 wstrzymuje wykonanie skryptu z komunikatem:

Nie zaimplementowane. map.js linia: 66 char: 5

Oto wycinek z kodem:

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 } 

informacji debug: x: 263 data.dim.x_min: 263 Y: 172 data.dim. y_max: 174

danych jest obiekt zwrócony z JQuery Ajax rozmowy. Działa to w Firefoksie 3.0 i 3.5, safari 4.0.2 i tylko ten błąd wykryłem podczas przeglądania strony w IE8. Zmuszenie IE8 do trybu IE7 nie powoduje, że błąd zniknie.

nie mam IE7 do debugowania z, ale mam tester mówiąc, że to nie działa w IE7 albo.

+0

Wygląda to tak ... Jestem również zainteresowany wiedzieć, dlaczego to nie działa. Czy możesz debugować krok po kroku? –

Odpowiedz

20

Zmienna "top" używana w kodzie jest obiektem typu DispHTMLWindow2 (najbardziej zewnętrznym obiektem okna) i jest już używana przez przeglądarki, co powoduje konflikt, ponieważ obiekt ten nie może być celem operacji przypisania. Wygląda na to, że Firefox i Safari to ignorują, podczas gdy IE nie pozwala skryptom na nadpisywanie tego.

rozwiązania tego:

1) stwierdzenie, top używanego jako zmiennej lokalnej w celu określenia jego zakresu, gdzie jest on stosowany.

2) Zmień nazwę zmiennej na coś, co nie jest w konflikcie z tym zdefiniowanym globalnie.

Description of other variable names you shouldn't use

+4

Najbardziej przydatny komunikat o błędzie od czasu "Operacja przerwana" – Triptych

+0

Rozwiązanie 1 działa u mnie. Dzięki – user427969

2

IE 8 ma świetny debugger javascript. Możesz dodać punkt przerwania gdzieś przed błędem i przejść przez ten kod, aby zobaczyć, czy coś jest nie tak z danymi. IE8 jest wybredny z przecinkami na listach, dlatego może pojawić się tylko błąd. Możesz przeciągnąć debuger za pomocą F12, kliknij Script i wybierz start debugging. Możesz dodać punkt przerwania, klikając na margines, gdzie znajdują się numery linii.

+0

Komentarz F12 był dla mnie przydatny. Zastanawiałem się, jak zdobyć coś w IE, które funkcjonowało jak Firebug, jeśli tylko podstawy. – Belrog

Powiązane problemy