我使用以下功能来检测浏览器关闭,或者某人键入其他一些网站名称等,
$(window).bind("beforeunload", function(){
return confirm("Do you really want to close?");
});
但上面的代码正在调用页面刷新,href点击,表单提交等
如何在这些场景中严格禁止运行上述代码,或者我是否缺少其他方法
任何帮助或代码指针都将不胜感激
答案 0 :(得分:4)
在卸载当前页面之前调用beforeunload,无论下一个目标位于何处 - 任何其他页面,甚至在您自己的站点上,甚至重新加载当前URL。该功能背后的想法是能够向用户询问此特定网页中未保存的数据,以便在可能导致数据丢失的任何事情即将发生时触发。
根据mozilla docs,此方法没有标准。它由IE4实现并由其他浏览器复制。
我认为没有办法知道该网页即将关闭的原因。通常,使用它的方式是页面跟踪某种变化标志,并仅在用户有重要的未保存数据时提示用户。
以下是此事件发生的事件数据的Microsoft's documentation。您将不得不设计一些测试,看看您是否可以可靠地告诉(跨浏览器)导致调用它的原因,并在某些情况下避免提示。