在IE中总是不会调用HTML页面卸载

时间:2012-03-12 03:25:25

标签: javascript html internet-explorer onunload

我在表单的主体上写了一个onunload方法。由于页面有大量内容要从服务器流式传输,因此下载整个表单需要一段时间。当表单下载到浏览器时,如果用户单击窗口关闭按钮,则卸载事件(写入调用服务器端操作以重置某个标志)有时不会被触发。卸载方法写在页面的末尾,这是一个原因吗?无论如何,我们可以确保调用onunload吗?

3 个答案:

答案 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.
}