我收到Firefox「無響應腳本」的錯誤消息。這個錯誤是由於我添加到我的頁面的一些JavaScript。Javascript:無響應的腳本錯誤
我想知道如果無響應是由代碼循環(函數互相調用循環或無休止的「循環」)或可能有其他原因造成的嗎?
你能幫我調試這些類型的錯誤嗎?
感謝
我收到Firefox「無響應腳本」的錯誤消息。這個錯誤是由於我添加到我的頁面的一些JavaScript。Javascript:無響應的腳本錯誤
我想知道如果無響應是由代碼循環(函數互相調用循環或無休止的「循環」)或可能有其他原因造成的嗎?
你能幫我調試這些類型的錯誤嗎?
感謝
當JavaScript代碼的時間超過預定量不再運行,Firefox會顯示一個對話框,上面寫着警告:腳本沒有響應。這個時間由設置dom.max_script_run_time和dom.max_chrome_script_run_time給出。增加這些設置的值將導致警告的出現頻率降低,但會失去目的:通知您擴展或網站出現問題,以便您可以停止失控腳本。
此外:
發現問題
要確定哪些腳本運行時間過長的來源,點擊警告對話框停止腳本按鈕,然後轉到工具|錯誤控制檯。錯誤控制檯中的最新錯誤應標識導致問題的腳本。
檢查錯誤控制檯應該很明顯你的JavaScript的哪一部分是造成這個問題。從那裏,或者刪除違規的代碼片段,或者改變它,使其不會像資源密集型一樣。
編輯:正如在該主題作者的評論中提到的,強烈建議使用Firebug來調試javascript問題。 Jonathan Snook在使用斷點調試javascript的複雜部分時有一個有用的視頻。爲了避免這種
一種方法是用這樣的超時來包裝你可憐的高性能的代碼:
setTimeout(function() {
// <YOUR TIME CONSUMING OPERATION GOES HERE>
}, 0);
這不是防彈的解決方案,但它可以在某些情況下解決這一問題。
通常,繁重的任務是在for循環中。有關如何將帶有繁重任務的for循環轉換爲將系統控制傳回瀏覽器的結構的詳細說明,請參閱:http://stackoverflow.com/questions/4460263/disabling-the-long-運行腳本,消息在互聯網資源管理器/ 11619030#11619030 – 2012-07-23 19:58:42
在這個問題上的優秀解決方案:How can I give control back (briefly) to the browser during intensive JavaScript processing?,通過使用異步jQuery插件。我有一個類似的問題,解決它通過改變我的$。每次爲$ .eachAsync
js libs
一些方法可能會引起開銷。例如。 .htm()
VS .innerHTML
我們需要按照這些步驟在Firefox停止腳本。
步驟1 啓動Mozilla Firefox瀏覽器。
步驟2 點擊在Firefox窗口頂部的地址欄中的任意位置,以突出整個領域。
步驟3 輸入 「about:config中」(在這裏和整個省略了引號),然後按 「Enter」 鍵。 A「這可能會使您的保修失效!」警告信息可能會出現;如果有,請點擊「我會小心的,我保證!」按鈕打開包含所有Firefox設置的頁面。
第4步 在頁面頂部的「搜索」框中單擊一次,然後鍵入「dom.max_script_run_time」。該設置位於並顯示;它的默認值爲10.
步驟5 雙擊設置以打開「輸入整數值」窗口。
步驟6 輸入「0」,然後單擊「確定」將值設置爲零。 Firefox腳本現在無限期運行,不會拋出任何腳本錯誤。 步驟7
重新啓動的Mozilla Firefox。
究竟什麼是你問? – SLaks 2010-04-21 19:55:23
如果您的代碼正在等待AJAX回調,並且花費很長時間也可能是一個原因。 – Kasturi 2010-04-21 19:57:02
獲取Firebug並學習如何使用它。然後你可以自己調試這些錯誤。 – Robusto 2010-04-21 19:59:17