【问题标题】: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 默认会抛出此错误。当我打开表单时它就会出现,否则一切都会很好。

标签: javascript jquery ruby-on-rails ajax


【解决方案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; });
          

          【讨论】:

            猜你喜欢
            • 2016-12-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-16
            • 1970-01-01
            相关资源
            最近更新 更多