2009-12-16 14 views
9

Desidero eseguire il benchmark del codice JavaScript nel browser, ma potrebbe attivare il popup "Avviso: non risponde script" di Firefox. Ciò consente all'utente di fare clic su "Interrompi script" nel caso in cui il browser venga catturato in una funzione di fuga. Mentre è visualizzato il pop-up, la funzione attualmente in esecuzione è stata interrotta. Questo non è l'ideale, quindi c'è un modo per eseguire i miei benchmark in modo diverso in modo che Firefox non mostri questo avviso e rovini i miei risultati?Come evitare il popup Script non risponde in Firefox con Javascript in esecuzione prolungata?

risposta

11

Nel indirizzo tipo di barra di Firefox about: config

si desidera modificare dom.max_script_run_time essere abbastanza grande per gli script per l'esecuzione.

+7

Dovrebbe farlo per ogni utente della pagina? – Oded

+7

Lo sta usando per il benchmarking - Non penso che ci siano altri utenti. – Annie

9

Devi dividere le azioni lunghe in quelle più piccole ed eseguirle a turno. Ciò consentirà anche una migliore indicazione di avanzamento.

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

+2

Potete elaborare? Un semplice esempio, forse? – spoulson

+0

Ecco un esempio di come usare setTimeout per spezzare la gestione del javascript: http://www.sonofsofaman.com/hobbies/code/settimeout.asp Se stai facendo benchmark, assicurarsi che si consente il codice per correre abbastanza a lungo per compensare la risoluzione del timer. Probabilmente vorrai leggere questo: http://ejohn.org/blog/accuracy-of-javascript-time/ – Annie

+0

Questo link sembra essere rotto. Potresti approfondire come farlo nella tua risposta? – Chris

0

Il codice qui sotto risolto il problema per me. ..

<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> 
Problemi correlati