【问题标题】:How to control browser confirmation dialog on leaving page?如何在离开页面时控制浏览器确认对话框?
【发布时间】:2013-10-04 10:56:06
【问题描述】:

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

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

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

【问题讨论】:

  • 谢谢,但请先阅读我的整个问题,在发布之前我已经阅读了所有其他问题
  • 我遇到了问题!你能帮我解决这个问题吗?
  • 这个问题的答案就是你的答案。你可能不喜欢这个结果,但它仍然是唯一的答案。
  • 以前版本的 Firefox 允许覆盖 window.onbeforeunload..

标签: javascript jquery


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答,但这不起作用。这种情况下的行为是相同的。也许我做错了什么。我试图在“$(window).unload(function()”中添加一个警报,但没有显示出来。有什么想法吗?
  • 好吧,$(window).unload 仅在用户同意离开页面时调用。根据您用于测试的浏览器,它的行为会有所不同。例如,Chrome 将阻止卸载功能中的警报。因此,请尝试使用 console.log,看看这是否会给您一些输出。
【解决方案2】:

这很简单。只需使用

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

在用户重新加载时提示,并且

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

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

【讨论】:

    【解决方案3】:
     window.onbeforeunload = function() {
           if (data_needs_saving()) {
               return "Do you really want to leave our brilliant application?";
           } else {
              return;
           }
        };
    

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2021-09-26
      • 2023-03-27
      相关资源
      最近更新 更多