12

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

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 后,我得到了这个弹出窗口。

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

4

3 回答 3

14

这是我所做的,根据您的需要进行修改:

// 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 中运行。

于 2013-10-04T11:30:10.057 回答
3

这很简单。只需使用

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

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

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

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

于 2021-03-03T03:40:17.357 回答
0
 window.onbeforeunload = function() {
       if (data_needs_saving()) {
           return "Do you really want to leave our brilliant application?";
       } else {
          return;
       }
    };
于 2020-06-07T05:53:02.310 回答