在页面刷新和href点击之前调用beforeunload

时间:2011-07-14 22:02:43

标签: javascript jquery html

我使用以下功能来检测浏览器关闭,或者某人键入其他一些网站名称等,

$(window).bind("beforeunload", function(){
        return confirm("Do you really want to close?"); 
    });

但上面的代码正在调用页面刷新,href点击,表单提交等

如何在这些场景中严格禁止运行上述代码,或者我是否缺少其他方法

任何帮助或代码指针都将不胜感激

1 个答案:

答案 0 :(得分:4)

在卸载当前页面之前调用beforeunload,无论下一个目标位于何处 - 任何其他页面,甚至在您自己的站点上,甚至重新加载当前URL。该功能背后的想法是能够向用户询问此特定网页中未保存的数据,以便在可能导致数据丢失的任何事情即将发生时触发。

根据mozilla docs,此方法没有标准。它由IE4实现并由其他浏览器复制。

我认为没有办法知道该网页即将关闭的原因。通常,使用它的方式是页面跟踪某种变化标志,并仅在用户有重要的未保存数据时提示用户。

以下是此事件发生的事件数据的Microsoft's documentation。您将不得不设计一些测试,看看您是否可以可靠地告诉(跨浏览器)导致调用它的原因,并在某些情况下避免提示。