2009-08-14 11 views
10

Este realmente me desconcierta, ya que el código parece completamente inofensivo.Error de Javascript en IE8: No implementado

IE8 se detiene la ejecución del script con un mensaje:

No implementado. map.js línea: 66 Char: 5

Aquí está un recorte desde el código:

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 } 

información de depuración: x: 263 data.dim.x_min: 263 y: 172 data.dim. y_max: 174

Los datos son un objeto devuelto por JQuery Ajax. Esto funciona en Firefox 3.0 y 3.5, safari 4.0.2 y solo he encontrado este error al visualizar la página en IE8. Forzar IE8 en el modo IE7 no hace que el error desaparezca.

No tengo IE7 para depurar, pero tengo un probador que dice que tampoco funciona en IE7.

+0

Se ve bien ... También me interesa saber por qué esto no funciona. ¿Se puede depurar paso a paso? –

Respuesta

20

La variable 'top' utilizada en el código es un objeto de tipo DispHTMLWindow2 (objeto de ventana más externo) y ya está en uso por los navegadores y está causando el conflicto, ya que ese objeto no puede ser el objetivo de la operación de asignación. Parece que Firefox y Safari ignoran esto, mientras que IE no permite que los scripts sobrescriban esto.

Soluciones para esto:

1) Declarar la parte superior que está utilizando como variable local para definir su ámbito de aplicación donde se utiliza.

2) Cambie el nombre de la variable a algo que no entre en conflicto con este global predefinido.

Description of other variable names you shouldn't use

+4

El mensaje de error más útil desde "Operación abortada" – Triptych

+0

La solución 1 funcionó para mí. Gracias – user427969

2

IE 8 tiene un excelente depurador de JavaScript. Es posible que desee agregar un punto de interrupción en algún lugar antes del error y recorrer el código para ver si algo es extraño con los datos. IE8 es exigente con las comillas finales en las listas, que pueden ser la razón por la que solo obtiene el error. Puede extraer el depurador con F12, hacer clic en Script y elegir iniciar la depuración. Puede agregar un punto de quiebre haciendo clic en el margen donde están los números de línea.

+0

El comentario F12 fue útil para mí. Me preguntaba cómo conseguir algo en IE que funcionara como Firebug, solo lo básico. – Belrog

Cuestiones relacionadas