2

页面卸载可能有不同的原因:
1 用户关闭当前窗口。
2 用户导航到另一个位置。
3 单击后退、前进、刷新或主页按钮。
4 用户提交表单,然后浏览器开始卸载当前页面并加载表单提交结果的页面。(假设当前窗口是窗体的目标)。
5 等等...

我可以在 onunload 处理程序中以某种方式知道卸载的原因是 p.4,即移动到带有表单提交结果的页面吗?
我可以在提交表单时定义一些标志,但这并不能解决问题。因为来自网络服务器的响应(在表单提交时)需要一些时间,所以浏览器不会立即卸载当前页面并等待来自服务器的响应。在此等待期间,用户可以关闭窗口或在任何地方导航。而且我需要知道它是否确实移动到结果页面或其他东西......?

4

2 回答 2

1

你可以劫持其中一些事件。

例如,对于链接,您可以在链接上添加一个事件处理程序,以保存其href属性,执行您需要的操作,然后设置window.locationhref您存储在变量中的值。

于 2010-04-27T04:40:45.993 回答
0

在卸载处理程序中无法知道页面卸载的确切原因。OnUnload 事件不是一个标准,它首先由 IE 实现。

不同的浏览器可能会以不同的方式处理它并针对不同的情况触发事件。

msdn 参考

Mozilla参考

因此,如果您想知道卸载处理程序中卸载的原因,我认为您可能不走运。然而,正如亚历克斯在他的回答中指出的那样,您可能会知道用户通过单击页面上的某个链接离开您的页面,方法是让这些链接的点击处理程序更加智能。

于 2010-04-27T05:28:49.183 回答