2008-11-17 139 views
8

我正在開發一個廣泛使用JavaScript(jQuery)的網站。我經常收到IE'停止運行這個腳本?'錯誤對話框,當我嘗試關閉瀏覽器。「停止運行此腳本?」錯誤

我猜這個問題的發生是因爲該網站是一個使用AJAX的頁面,因此沒有回傳來重置IE執行的命令數。

客戶端註冊表黑客攻擊不是一個選項。

有沒有人知道一種方法來解決這個錯誤?

更新:頁面有一個數字(〜10)間隔計時器,持續輪詢30或60秒間隔。

+0

你可能想看看爲這個問題發佈的答案「[這個頁面上的腳本導致即運行緩慢](http://stackoverflow.com/questions/212550/a-script-on-this-頁面被致病,即對運行慢)」。 – 2008-11-18 05:11:50

回答

3

你是否偶然使用window.onunload處理程序?如果你這樣做,你可能會檢查你沒有無限循環。

要檢查,在你的JavaScript的底部做:

window.onunload = null; 

並再次測試。

+0

這在我的情況下不是問題。我只是在頁面中運行一個長腳本。 – liammclennan 2011-05-22 07:46:24

+0

@liammclennan所以,你有一個只是總是(或幾乎總是)運行的腳本,但只有在關閉標籤時纔會出現警告? – 2011-05-23 18:29:25

1

您的代碼中只有一些長時間運行的腳本/無限循環。更多細節可能會得到更準確的答案。

如果您的頁面正在使用大量的時間間隔,那麼在導航離開頁面之前,您需要取消它們。使用window.onunload清除所有間隔。

4

我也遇到過這個問題,並通過分割持續的DOM執行來克服這個問題。對於這種方法,我使用了setTimeout函數。解決這個問題完全取決於你如何劃分連續執行。

+0

setTimeout是要走的路! 在IE8中進行測試,並通過超過5,000個項目的大型AJAX數據集進行測試。 – 2013-04-30 18:13:21

1

我只是blogged about this並把我認爲是一個非常時尚的解決方案。所以看看。如上所述,我的解決方案只是將長時間運行的操作分解爲塊,但我提供了一個很好的工具類來執行此操作。

+0

你的解決方案很有趣。我沒有嘗試過,但如果它有效,那麼它非常有用。 – liammclennan 2011-05-22 07:45:43

0

也可以考慮長期運營分成的$(document)。就緒()和$(窗口).load()

0

我剛剛與太籠統jQuery選擇的問題:例如$("*")

2

問題:「停止運行此腳本?」錯誤

解決方法:你可以說這是一個兼容性問題或錯誤一樣的東西,而在Mozilla任何錯誤運行,但它在IE 6,7或運行8,並顯示錯誤消息「停止運行此腳本」。微軟已經提供了一個補丁來修復IE中的這個問題。所以,請到以下鏈接並下載「Microsoft修復」,並安裝相同並重啓瀏覽器,你將永遠看不到「停止運行此腳本」錯誤: http://support.microsoft.com/kb/175500#FixItForMeAlways

0

喜歡誰提到$的人(「*」),儘量不要使用$(this)作爲自定義事件的綁定選擇器,這會導致我的最新腳本破壞系統的加載時間。