如何以角度关闭选项卡或浏览器时阻止默认()

时间:2015-03-02 09:00:57

标签: javascript angularjs

是否有关闭标签或浏览器时会触发的事件?

我想首先警告用户,如果他们确定要退出,如果没有,则默认()。

这不起作用:

angular.element($window).bind("beforeunload", function (event) {
    var response = confirm('Sure?');

    if(!response){
        event.preventDefault();
    }
});

2 个答案:

答案 0 :(得分:0)

在处理该事件时,您无法使用confirm,您必须返回一个字符串,该字符串将用作确认消息:

angular.element($window).bind("beforeunload", function (event) {
    return 'Sure?';
});

see the MDN on beforeunload

请注意,您无法确保用户看到此确认对话框:

  

当此事件返回非void值时,系统会提示用户   确认页面卸载。在大多数浏览器中,返回值   事件显示在此对话框中。在Firefox 4及更高版本中返回   字符串不会显示给用户。相反,Firefox会显示   字符串"此页面要求您确认是否要离开 -   您输入的数据可能无法保存。"见bug 588292。

     

自2011年5月25日起,HTML5规范声明要调用   window.alert(),window.confirm()和window.prompt()方法可能是   在此活动期间被忽略。有关更多信息,请参阅HTML5规范   的信息。

     

另请注意,各种移动浏览器会忽略该事件的结果   (也就是说,他们不会要求用户确认)。 Firefox有一个   在about:config中隐藏的偏好做同样的事情。本质上这个   表示用户始终确认可以卸载文档。

理由是网站不应该让关闭标签/窗口/浏览器变得困难或痛苦。

答案 1 :(得分:0)

Try :

的jQuery(窗口).bind(             " beforeunload&#34 ;,             function(){                 返回确认("你真的想关闭吗?")             }     );