2010-04-27 65 views
2

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

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

回答

1

您可以劫持其中的一些事件。

例如,对于链接,您可以添加在链接的事件处理程序,节省了他们的href属性,执行您需要什么,然后设置window.locationhref你已经保存在一个变量。

+0

谢谢,但我需要抓住所有案例......或者一个案例 - 移动到提交结果页面。目前我使用框架(即onunload事件在主窗口上,表格在主窗口内框架中),但这种方法也有缺点。 – 2010-04-27 05:56:18

0

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

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

msdn reference

mozilla reference

所以,如果你想知道在卸载处理程序卸载的原因,我想你可能是出于运气。然而,正如Alex在他的回答中指出的那样,通过点击页面上的某个链接,您可以通过让这些链接的点击处理程序更加智能化,来了解用户是否可以从页面导航。