1

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

4

3 回答 3

1

打击你的事情可能是,如果 window.onload 尚未触发,IE 不会触发 unload 事件。此博客文章中描述了解决方案:http: //blog.moxiecode.com/2008/04/08/unload-event-never-fires-in-ie/

于 2013-11-18T16:22:49.947 回答
0

有两个原因。一,就像你说的,浏览器甚至可能没有达到卸载,所以你应该在你的身体标签上方声明它。

另一个是,正如 GoldenNewby 已经说过的,您需要给代码一些时间来完成,例如警报。这是因为当下一页准备好时,JavaScript 会从内存中清除,并且在旧脚本上简单地停止执行。如果您可以保证脚本将花费比页面加载更少的时间,则不需要警报,但如果执行时间可能超过 2 毫秒左右,则需要购买一些时间。

于 2012-03-12T03:39:16.913 回答
0

IE 有一个onbeforeunload事件,你可以使用它。只需设置一个标志,以便您可以在已经完成操作的情况onunload下提前退出。onbeforeunload

window.onunload = window.onbeforeunload = function () {
    if (window.isAlreadyUnloaded) return;
    window.isAlreadyUnloaded = true;
    // do your stuff here.
}
于 2012-03-12T03:40:18.473 回答