【问题标题】:How is "Are you sure you want to navigate away from this page? " generated in browsers?“您确定要离开此页面吗?”是如何在浏览器中生成的?
【发布时间】:2010-10-04 00:32:51
【问题描述】:

我有一个打开“模式窗口”的页面。它实际上只是一个 DIV,里面有一个 IFRAME,我在其中加载另一个页面。当我想刷新页面时,浏览器会弹出一个窗口说“你确定要离开这个页面吗?重新加载这个页面会导致模态窗口消失。按确定继续,或取消留在当前页面。”

此消息是如何生成的?浏览器如何确定我在那里有一个模态窗口,因为我没有使用来自 JavaScript 的任何 window.open() 调用?有什么办法可以禁用浏览器的这种行为。

【问题讨论】:

  • 让我知道你在哪个网站上工作,这样我就可以避免它。
  • 呃,stackoverflow 做到了!而且,这对于避免丢失您在页面上编写的更改是一件好事。
  • 在浏览器设置中禁用 JavaScript。

标签: browser refresh modal-dialog


【解决方案1】:

在 IFRAME 中加载的页面源中可能是 body.onunload

由于模态窗口本质上是一个 IFRAME,因此当您关闭(或刷新)主窗口时,浏览器知道它正在杀死该 IFRAME,因此该 IFRAME 中的任何 body.onunload 都会触发。

【讨论】:

  • 你是对的。实际上,我正在使用 Wicket 框架,并在他们的源代码中进行了搜索,并查看了我发现的内容: window.onbeforeunload = function() { return "重新加载此页面将导致模式窗口消失。"; } 幸运的是,这可以很容易地禁用。谢谢!
【解决方案2】:

如果您有处理 onbeforeunload 的函数,则会自动生成 Firefox 消息。

您可以通过在处理程序的 and 处返回 null 来禁用它。

【讨论】:

    【解决方案3】:

    这可能是由于某些脚本修改了所有站外链接以显示此模式窗口,然后根据您与模态窗口。

    如果您想去除这种行为,您可以删除所有外部链接的点击事件。

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 2012-03-12
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      相关资源
      最近更新 更多