Firefox忽略显示确认警报消息

时间:2016-07-22 11:00:27

标签: javascript jquery firefox

我的页面有一个包含许多可从用户收集的信息的表单。如果用户尝试关闭此页面,则应显示一个确认框,说明:"您确定要离开此页面吗?"。

$(window).on('beforeunload',function(e){
     //alert code
}

一切都好。但是当我使用搜索栏时,Firefox会忽略我的警报并重定向到搜索页面。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

当窗口,文档及其资源即将卸载时,会触发beforeunload事件。

将字符串分配给returnValue Event属性时,会出现一个对话框,要求用户确认离开页面。如果未提供任何值,则会以静默方式处理事件:

window.addEventListener("beforeunload", (event) => {
  event.returnValue = null;
});

// is equivalent to
window.addEventListener("beforeunload", (event) => {
  event.preventDefault();
});

基于WebKit的浏览器可能不遵循对话框的规范。一个几乎跨浏览器的工作示例:

window.addEventListener("beforeunload", (event) => {
  const confirmationMessage = "your message";

  event.returnValue = confirmationMessage;
  return confirmationMessage;
});

注意 当此事件返回非void值时,将提示用户确认页面卸载。在大多数浏览器中,事件的返回值显示在此对话框中。在Firefox 4及更高版本中,返回的字符串不会显示给用户。相反,Firefox会显示它自己的预定义字符串。

自2011年起,HTML5规范声明在此次活动期间可能会忽略对window.alert()window.confirm()window.prompt()方法的调用。

另请注意,各种移动浏览器会忽略事件的结果(即,他们不会要求用户进行确认)。 Firefox在about:config中有一个隐藏的首选项来执行相同操作。实质上,这意味着用户始终确认可以卸载文档。

答案 1 :(得分:0)

您可以编写类似这样的代码

FormBuilder

您无法在beforeunload方法中生成自定义弹出窗口。