如何禁用/覆盖“您要离开此站点吗?”警报?

Posted

技术标签:

【中文标题】如何禁用/覆盖“您要离开此站点吗?”警报?【英文标题】:How to disable/override "Do you want to leave this site?" alert? 【发布时间】:2016-12-07 23:50:00 【问题描述】:

我在弹出窗口中有一个表单,它是由 AJAX 调用加载的。它是使用 RoR 的form_for 标签构建的。即使我不修改其中的任何字段并尝试导航到另一个页面,chrome 也会显示以下警报。

我想禁用此警告框。可能吗?如果是,怎么做?

我已经尝试过this,但它不再有效。

以下是环境设置,

Ruby version = 1.9.3
Rails version = 3.1.4
Chrome version = 52
jQuery version = 1.10.2

【问题讨论】:

您是如何调用此警报的? 我没有打电话。 Chrome 默认会抛出此错误。当我打开表单时它就会出现,否则一切都会很好。 【参考方案1】:

之所以会显示警报,是因为在代码中的某处,您在卸载事件之前覆盖了窗口,当您尝试关闭窗口时,该事件会触发。 尝试禁止此事件在您的代码中添加此事件:

window.onbeforeunload = null;

【讨论】:

但这将删除所有onbeforeunload 事件。我想运行我在onbeforeunload 事件中指定的代码,但不是 chrome 的版本 你不能重写那个函数吗? window.onbeforeunload = yourCustomFunction; 应该可以工作【参考方案2】:

您可以在 beforeunload 处理程序中挂接任何其他函数:

window.addEventListener("beforeunload", function(e)
    yourCustomFunction();
);

【讨论】:

【参考方案3】:

将其设置为空函数:

window.onbeforeunload = () =>

【讨论】:

【参考方案4】:

将您的form 标签包含在div 中,如下所示:

<div class="col-xs-12 no-padding"><form role="form" class="form-horizontal pad10-top" id="" onSubmit="return false;"> ...</form></div>

【讨论】:

【参考方案5】:

你也可以试试这个。

$(window).off('beforeunload');

【讨论】:

【参考方案6】:

添加此行让我通过

window.addEventListener("beforeunload", function (e)  return true; );

【讨论】:

以上是关于如何禁用/覆盖“您要离开此站点吗?”警报?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CSOM 禁用 SharePoint 2013 警报

如何禁用连接警报(ios 多点连接框架)

如何在 Webbrowser 控件中禁用“安全警报”窗口

如何在 iOS 模拟器中禁用系统位置警报

使用 jQuery 禁用警报消息 [关闭]

在 WebBrowser 控件中禁用警报窗口