页面卸载可能有不同的原因:
1用户关闭当前窗口。
2用户导航到另一个位置。
3单击“后退”,“前进”,“刷新”或“主页”按钮。
4用户提交表单,然后浏览器开始卸载当前页面并加载页面并提供表单提交结果。 (假设当前窗口是表单的目标)。
5等等......
我可以在onunload处理程序中以某种方式知道卸载的原因是p.4,即移动到带有表单提交结果的页面吗?
我可以在提交表单时定义一些标志,但这并不能解决问题。因为来自Web服务器的响应(在表单提交上)需要一些时间,所以浏览器不会立即卸载当前页面并等待来自服务器的响应。在此等待期间,用户可以关闭窗口或在任何地方导航。我需要知道它是否真的转移到结果页面或其他东西......?
答案 0 :(得分:1)
你可以劫持其中一些事件。
例如,对于链接,您可以在链接上添加事件处理程序,以保存其href
属性,执行您需要的内容,然后将window.location
设置为您存储在href
中的{{1}}变量
答案 1 :(得分:0)
卸载处理程序无法识别页面卸载的确切原因。 OnUnload事件不是标准,首先由IE实现。
不同的浏览器可能会以不同的方式处理它,并针对不同的情况触发事件。
因此,如果您在卸载处理程序中尝试了解卸载的原因,我认为您可能会失败。然而正如亚历克斯在他的回答中所指出的那样,通过点击页面上的某些链接,您可以了解用户导航离开您的页面,使这些链接的点击处理程序更加智能化。