活动window.onbeforeunload
的可靠性如何?
答案 0 :(得分:12)
onbeforeunload
适用于我尝试过的每个浏览器。setTimeout
。它必须以同步方式返回一个字符串,以阻止卸载。同样,我在评论中说“不”,但我可以进一步阐述。如果您将事件处理程序附加到页面以检测链接上的单击,则可以手动调用onbeforeunload
处理程序以获取字符串响应,并使用该处理程序显示自定义确认框,取消单击事件为你这样做了请注意,这不会影响重新加载,后退,前进或关闭按钮,只会单击指向新页面的链接。您还应注意不要影响同一页面上锚点的链接,或javascript:void(null);
- 类型链接。这也允许您发出AJAX请求,如果用户确认要离开页面,您可以在加载新页面之前做一些事情。
长话短说,在某些情况下有其他选择,但这一切都源于onbeforeunload
事件并且可能相当复杂。