如何在离开页面时控制浏览器确认对话框?

时间:2013-10-04 10:56:06

标签: javascript jquery

我知道有很多问题,但没有什么能正确回答我。我想在用户离开页面时显示确认对话框。如果用户按下取消,他将保持在页面上,如果确定,他所做的更改将通过调用方法回滚。我这样做了:

window.onbeforeunload = function () {
  var r = confirm( "Do you want to leave?" );
  if (r == true) {
       //I will call my method
  }
  else {
      return false;
  }
};

问题是我正在获取浏览器默认弹出窗口:“LeavePage / StayOnPage”

  

此页面要求您确认是否要离开 - 为您提供数据   已输入可能无法保存。

此消息显示在Firefox中,在Chrome中略有不同。我在第一个确认对话框上按OK后弹出这个弹出窗口。

有没有办法不显示此对话框? (第二个,我没有创建)。 或者,如果有任何方法可以控制此弹出窗口,有没有人知道如何做到这一点? 感谢

3 个答案:

答案 0 :(得分:10)

这就是我所做的,修改以满足您的需求:

// This default onbeforeunload event
window.onbeforeunload = function(){
    return "Do you want to leave?"
}

// A jQuery event (I think), which is triggered after "onbeforeunload"
$(window).unload(function(){
    //I will call my method
});

注意:它经过测试可在Google Chrome,IE8和IE10中使用。

答案 1 :(得分:0)

 window.onbeforeunload = function() {
       if (data_needs_saving()) {
           return "Do you really want to leave our brilliant application?";
       } else {
          return;
       }
    };

答案 2 :(得分:0)

这很简单。就用

window.onbeforeunload = function(){
  return '';
};

在用户重新加载时提示,以及

window.close = function(){
 return '';
};

在用户关闭页面时进行提示。 但是用户必须在页面上单击一次,或者在页面上执行任何操作以供代码检测。您不必在 return''; 中添加任何内容,因为 JavaScript 解释器会忽略它。