我有一個運行各種javascript代碼的頁面,包括調用setTimeout()
。如果用戶點擊鏈接導航到另一個頁面,那麼此頁面上的JavaScript停止運行的時間點,因此我的代碼將不再被調用?例如點擊鏈接後,JavaScript何時停止在頁面上運行?
- 一旦鏈接被點擊(我知道這是錯誤的)
- 當瀏覽器開始接收新的一頁
- 一些其他的呢?
這對於不同的主流瀏覽器是不同的嗎?
背景
我想很大程度上是知道這個利息的緣故,而不是解決任何特別的問題。促使我考慮這個問題的原因是我想在用戶點擊頁面上的特定鏈接時執行某些操作。我想執行一個ajax調用並處理結果,但是如果它在頁面卸載之前完成,我並不太在意。所以我會在鏈接點擊時觸發一個setTimeout(),然後如果我很幸運,它會完成,但如果我不是,它不會。我想知道它會在什麼情況下工作。雖然可能有其他解決方案來解決這個問題,但我不想解決問題,我只想知道問題的答案。
大概剛好在[onunload事件](https://developer.mozilla.org/en-US/docs/DOM/window.onunload)之後,但爲什麼這對你很重要? – 2013-05-08 12:48:52
_什麼瀏覽器? – 2013-05-10 08:54:34
在['卸載文檔清理步驟]期間清除*活動定時器*(其中'setTimeout'添加到)](http://www.w3.org/TR/html5/browsers.html#unloading-document-cleanup (從其他文件中)調用['卸載文檔過程]](http://www.w3.org/TR/html5/browsers.html#unload-a-document)。然而,我不確定在[導航過程]期間何時調用這些內容(http://www.w3.org/TR/html5/browsers.html#navigating-across-documents) – Bergi 2013-05-10 14:06:05