我有一個寫入窗體正文的onunload方法。由於該頁面從服務器獲取大量內容以供流式傳輸,因此下載整個表單需要一段時間。當表單被下載到瀏覽器中時,如果用戶單擊窗口關閉按鈕,有時會發生unload事件(寫入以調用服務器端操作以重置某個標誌)。卸載方法是寫在頁面的末尾,這是一個原因嗎?無論如何,我們可以確保onunload保證被稱爲?HTML頁面卸載不會總是在IE中調用
1
A
回答
0
有兩個原因。其中之一就像你說的那樣,瀏覽器甚至可能不會卸載,所以你應該把它聲明在你的身體標記之上。
另一方面,正如GoldenNewby所述,您需要給代碼一些時間來完成,比如提醒。這是因爲在下一頁準備就緒時JavaScript將從內存中清除,並且只會在舊腳本上停止執行。如果您可以保證腳本比頁面加載花費的時間更少,則不需要警報,但如果執行時間可能需要2ms或更長時間,則需要花費一些時間。
0
IE有一個onbeforeunload
事件,您可以使用它。只需設置一個標誌,以便您的onunload
可以提前退出,如果onbeforeunload
已經做到了。
window.onunload = window.onbeforeunload = function() {
if (window.isAlreadyUnloaded) return;
window.isAlreadyUnloaded = true;
// do your stuff here.
}
1
擊中你可能是事實,如果在window.onload還沒有啓動IE不會觸發unload事件的事情。本博客文章中描述瞭解決方案:http://blog.moxiecode.com/2008/04/08/unload-event-never-fires-in-ie/
+0
注意:該博客文章中描述的onstop事件在更現代版本的IE(至少10和11)中的工作方式不同。在onload事件之前從頁面導航(或刷新)時,它不會觸發。對我來說,工作解決方案不僅要將處理程序綁定到onload,還要綁定到onbeforeunload事件。 – 2013-11-26 12:12:04
相關問題
- 1. 卸載HTML頁面
- 2. 在IE中緩慢卸載頁面
- 3. 在IE中的頁面寬度背景不總是加載
- 4. 在頁面卸載前調用ajax
- 5. 停止在頁面卸載$就調用
- 6. 在IE瀏覽器中,onbeforeunload事件被解僱,鏈接不會卸載頁面
- 7. 頁面卸載時調用php函數
- 8. 自定義卸載頁面(不是MsgBox)
- 9. ASP.NET MVC - 在頁面卸載
- 10. 頁面不在IE中加載
- 11. Javascript - 在卸載/頁面隱藏事件中調用AJAX
- 12. 頁面卸載事件在FireFox中可用不在Chrome中
- 13. 響應離開IIS後頁面卸載是否被調用?
- 14. 通過從不同的html頁面調用,在另一個html頁面的div中加載一個html頁面
- 15. html代碼在用jquery加載html頁面後不會顯示
- 16. 卸載事件不會在IE中觸發window.open
- 17. JavaScript函數不會加載html頁面
- 18. facebook登錄後頁面不會重新加載ie ie
- 19. IE暫停加載HTML頁面
- 20. 在qwebview中加載html頁面時,不調用javaScriptWindowObjectCleared信號
- 21. 是Javascript能夠從HTML頁面卸載圖像嗎?
- 22. 卸載聲明不會卸載UserForm
- 23. 如何確保在頁面卸載前始終調用代碼
- 24. 梨不會卸載
- 25. jquery卸載頁面效果
- 26. Cordova頁面卸載事件
- 27. 從頁面卸載filepicker
- 28. Dropzone阻止頁面卸載
- 29. 卸載聚合物頁面
- 30. 動態卸載頁面
從我過去的經驗來看,onunload事件不會保證只要您希望運行就可以運行。如果在代碼完成之前加載下一頁,則可能無法完成。根據應用程序的不同,您可以執行警報或確認提示,爲您的代碼提供一些執行時間。 – GoldenNewby 2012-03-12 03:28:13