我在表单的主体上写了一个onunload方法。由于页面有大量内容要从服务器流式传输,因此下载整个表单需要一段时间。当表单下载到浏览器时,如果用户单击窗口关闭按钮,则卸载事件(写入调用服务器端操作以重置某个标志)有时不会被触发。卸载方法写在页面的末尾,这是一个原因吗?无论如何,我们可以确保调用onunload吗?
答案 0 :(得分:1)
如果window.onload尚未解雇,那么点击你的事情可能就是IE不会触发卸载事件。此博客文章中描述了该解决方案:http://blog.moxiecode.com/2008/04/08/unload-event-never-fires-in-ie/
答案 1 :(得分:0)
有两个原因。其中一个,就像你说的那样,浏览器甚至可能无法卸载,所以你应该将它声明在你的身体标签之上。
另一个是,正如GoldenNewby已经说过的那样,你需要给代码一些时间来完成,比如警报。这是因为在下一页准备就绪时,JavaScript将从内存中清除,并且只需在旧脚本上停止执行。如果您可以保证脚本比页面加载花费的时间更少,则不需要警报,但如果执行时间超过2毫秒,则需要花一些时间。
答案 2 :(得分:0)
IE有一个onbeforeunload
事件,您可以使用它。只需设置一个标记,这样onunload
就可以提前退出onbeforeunload
已经完成了它。
window.onunload = window.onbeforeunload = function () {
if (window.isAlreadyUnloaded) return;
window.isAlreadyUnloaded = true;
// do your stuff here.
}