如何在IE中的javascript onunload事件中获取页面卸载的原因?

时间:2010-04-27 04:32:02

标签: javascript html dom onunload

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

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

2 个答案:

答案 0 :(得分:1)

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

例如,对于链接,您可以在链接上添加事件处理程序,以保存其href属性,执行您需要的内容,然后将window.location设置为您存储在href中的{{1}}变量

答案 1 :(得分:0)

卸载处理程序无法识别页面卸载的确切原因。 OnUnload事件不是标准,首先由IE实现。

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

msdn reference

mozilla reference

因此,如果您在卸载处理程序中尝试了解卸载的原因,我认为您可能会失败。然而正如亚历克斯在他的回答中所指出的那样,通过点击页面上的某些链接,您可以了解用户导航离开您的页面,使这些链接的点击处理程序更加智能化。