我有一个写入窗体正文的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