2009-12-16 14 views
9

Quiero comparar algunos códigos JavaScript en el navegador, pero puede desencadenar el mensaje emergente "Advertencia: guión no responde" de Firefox. Esto permite al usuario hacer clic en "Detener secuencia de comandos" en el caso de que el navegador quede atrapado en una función fuera de control. Mientras se muestra la ventana emergente, la función que se está ejecutando se ha detenido. Esto no es ideal, entonces ¿hay alguna manera de ejecutar mis puntos de referencia de manera diferente para que Firefox no aparezca esta advertencia y arruine mis resultados?¿Cómo evitar la ventana emergente Script no responde en Firefox con Javascript de larga ejecución?

Respuesta

11

En dirección de tipo de barra de Firefox about: config

desea cambiar dom.max_script_run_time que ser lo suficientemente grande para que las secuencias de comandos para ejecutar.

+7

¿Se supone que debe hacer eso para cada usuario de la página? – Oded

+7

Lo usa para la evaluación comparativa. No creo que haya otros usuarios. – Annie

9

Tienes que dividir las acciones largas en otras más pequeñas y realizarlas por turnos. Esto también permitirá una mejor indicación de progreso.

http://www.sonofsofaman.com/hobbies/code/settimeout.asp

+2

¿Puedes elaborar? Un simple ejemplo, tal vez? – spoulson

+0

Aquí hay un ejemplo del uso de setTimeout para interrumpir la ejecución del javascript: http://www.sonofsofaman.com/hobbies/code/settimeout.asp Si está haciendo benchmarks, asegúrese de permitir que el código correr lo suficiente como para compensar la resolución del temporizador. Probablemente quiera leer esto: http://ejohn.org/blog/accuracy-of-javascript-time/ – Annie

+0

Ese enlace parece estar roto. ¿Podría dar más detalles sobre cómo hacer eso en su respuesta? – Chris

0

El código siguiente se resolvió el problema para mí. ..

<script type="text/javascript"> 
    function downloadJSAtOnload() { 
    var element = document.createElement("script"); 
    element.src = "deferredfunctions.js"; 
    document.body.appendChild(element); 
    } 
    if (window.addEventListener) 
    window.addEventListener("load", downloadJSAtOnload, false); 
    else if (window.attachEvent) 
    window.attachEvent("onload", downloadJSAtOnload); 
    else window.onload = downloadJSAtOnload; 
</script> 
Cuestiones relacionadas