2009-08-14 22 views
10

Questo mi incute davvero, poiché il codice sembra completamente innocuo.Errore Javascript in IE8: Non implementato

IE8 interrompe l'esecuzione di script con un messaggio:

Non implementato. map.js line: 66 char: 5

Ecco un elemento di cattura dal codice:

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 } 

di debug informazioni: x: 263 data.dim.x_min: 263 y: 172 data.dim. max_y: 174

dati è oggetto restituito dal JQuery Ajax chiamata. Funziona in Firefox 3.0 e 3.5, Safari 4.0.2 e ho riscontrato questo errore solo durante la visualizzazione della pagina in IE8. Forzare IE8 in modalità IE7 non fa scomparire l'errore.

Non ho IE7 per eseguire il debug con, ma ho avuto un tester dicendo che non funziona in IE7 neanche.

+0

Sembra giusto ... Sono anche interessato a sapere il motivo per cui questo non funziona. Puoi eseguire il debug passo dopo passo? –

risposta

20

La variabile 'top' utilizzata nel codice è un oggetto di tipo DispHTMLWindow2 (oggetto finestra più esterno) e già utilizzato dai browser e causa il conflitto, in quanto tale oggetto non può essere l'obiettivo dell'operazione di assegnazione. Sembra che Firefox e Safari ignorino questo, mentre IE non consente agli script di sovrascriverlo.

Soluzioni per questo:

1) dichiarare cima si sta utilizzando come variabile locale per definire è ambito in cui viene utilizzato.

2) Rinominare la variabile a qualcosa che non sia in conflitto con questo predefinito globale.

Description of other variable names you shouldn't use

+4

Messaggio di errore molto utile da "Operazione interrotta" – Triptych

+0

Soluzione 1 ha funzionato per me. Grazie – user427969

2

IE 8 ha un ottimo debugger javascript. Potresti voler aggiungere un punto di interruzione da qualche parte prima dell'errore e scorrere il codice per vedere se qualcosa è strano con i dati. IE8 è pignolo con le virgole nelle liste che potrebbero essere il motivo per cui viene visualizzato solo l'errore. Puoi tirare il debugger con F12, fare clic su Script e scegliere start debugging. È possibile aggiungere un punto di rottura facendo clic sul margine in cui si trovano i numeri di riga.

+0

Il commento F12 mi è stato utile. Mi chiedevo come ottenere qualcosa in IE che funzionasse come Firebug, se solo le basi. – Belrog