1

我想触发 onunload 事件来进行一些清理操作,我有多个选项卡(导航栏)显示多个指向不同网页的链接,我的问题是,即使我在其他页面中,我的卸载功能也在一些标签中其他jsp被解雇。请帮助解决这个问题,我希望在用户关闭该页面中的浏览器时调用卸载函数。

4

3 回答 3

4

我不确定你是如何让 onunload 事件工作的……我发现使用 onunload 事件的问题是它在页面被卸载后被触发。这意味着由于页面已被卸载,因此无法再执行 JavaScript。

您应该考虑使用 onbeforeunload 事件。此事件有点独特,因为如果处理此事件的函数返回任何内容,则会显示一个弹出窗口,询问用户是否愿意继续操作。因此,在您的情况下,请确保您的函数不返回任何内容。关于 onbeforeunload 事件需要注意的另一件事是,此时 Opera 不支持它(Safari、FireFox 和 Internet Explorer 支持)。

每次卸载页面时都会执行 onbeforeunload 和 onunload 事件。如果页面上的控件将页面提交给服务器代码,则会卸载页面并执行 JavaScript。

如果您不希望在页面上的控件将其提交到服务器时执行 JavaScript,您必须实现一些检查以查看您的代码是否应该执行。

这很简单,向页面添加一个 JavaScript 布尔值和一个将 this 布尔值设置为 true 的函数。确保页面中回传到服务器代码的每个元素在提交页面之前都将此布尔值设置为 true。在你的 onbeforeunload 事件中检查这个布尔值,看看你的清理代码是否应该被执行。

希望这可以帮助,

-弗林尼

于 2009-08-10T13:39:13.607 回答
1

似乎卸载功能已在全局范围内创建。尝试仅将该功能放置在您要操作的页面上。

于 2009-08-10T13:33:40.353 回答
1

你有一个框架集页面?您想在他们离开框架集时收到通知吗?在框架集上添加一个 onbeforeunload。我不知道您所说的清理是什么意思,但是您无法在跨浏览器安全卸载期间发送 XHR

于 2010-03-09T15:26:01.693 回答