8

Me encontré con este problema hoy en IE6 (pero es reproducible en todas las versiones recientes de IE).No se puede ejecutar el código de una secuencia de comandos liberada - IE6 IE7 IE8 IE9

Me di cuenta de que algunas personas se encuentran con este problema y no he visto una forma muy práctica de solucionarlo.

Parece haber alguna otra solución que flota sobre el orden de las etiquetas de secuencia de comandos y metaetiquetas en el encabezado del documento HTML. No he confirmar esto, pero aquí hay un enlace de todos modos: What causes the error "Can't execute code from a freed script"

también sé que la solución a este problema, de modo que lo pongo debajo

Respuesta

16

Primero de todo lo que necesita para localizar el origen del mensaje.

IE es conocido por su informe de error abismal, pero por suerte IE9 parece algo capaz. Si este error ocurre en IE6, IE7 o IE8 también ocurrirá en IE9, entonces use IE9 para depurar (para su cordura)

Abra la consola webdeveloper en IE9 (presione F12) y siga los pasos para producir este error .

IE9 ahora debería darle una indicación de archivo y línea en la consola, ¡yay!

Lo que normalmente sale mal es una devolución de llamada que se ejecuta después de un cierto retraso, ya sea por setTimeout o debido a una solicitud de Ajax. Si la ventana, el documento o el marco en el que se definió la devolución de llamada se descargan, recibirá este mensaje cuando intente ejecutar su función de devolución de llamada.

Al parecer, otros navegadores ignoran este problema, que está bien, supongo. Para hacer que IE haga lo mismo, simplemente envuelva la devolución de llamada en un bloque try-catch (no sé lo que evaluaría la devolución de llamada, no creo que se evalúe como indefinido). Si desea un manejo de errores más preciso o si realmente desea tomar medidas cuando esto ocurra, probablemente pueda hacerlo y haga una publicación aquí porque tengo curiosidad sobre qué tipo de caso de uso realmente lo requeriría.

-2

La solución - asegúrese de colocar todas las instrucciones META ANTES de cualquier instrucción de script.

+2

¿Lo compruebas tú mismo? ¿O está copiado de otro sitio web? No tengo metaetiquetas y aún consigo este error – Mike

0

Si tiene una página que utiliza varios marcos, este error puede ser causado por objetos inicializados en un marco que se utiliza en otro marco después de que el marco inicial se eliminó de la página.

Cuando eso sucede, entonces dependiendo de la situación, es posible que desee:

  • revisión su código en busca de la memoria potencial de fugas
  • Si los objetos representan algunos datos que hace realidad quieren que pasa entre bastidores , luego considere usar su forma de stringified en su lugar.
Cuestiones relacionadas