【问题标题】:onbeforeunload loops and hangs Firefoxonbeforeunload 循环并挂起 Firefox
【发布时间】:2012-05-31 07:59:54
【问题描述】:

我正在使用这个脚本来防止页面的重新加载和返回按钮导航,以通知用户如果他/她离开,所做的更改将会丢失。

在 Firefox 中,该问题似乎只在点击后退按钮时出现。 显示警告对话框,并且无论您按“留下”还是“离开”,都会不断循环备份,并且您必须强制关闭 Firefox。

有没有更好的脚本,实际上在 FF 中有效?

window.onbeforeunload = function (e) {
   e = e || window.event;

   if (e) {
      e.returnValue = message;
   }

   return message;
};

【问题讨论】:

  • 您对脚本的期望是什么?只是阻止用户重新加载页面..?除非完全有必要,否则我建议不要触碰浏览器的默认行为。
  • 这是必要的。它在 Chrome 和 Safari 中运行良好。我想通知用户;如果他/她离开,所做的更改将丢失。并且用户可以选择离开或留下。
  • 好的,唯一的错误是当您在 Firefox 中按 back 时?在问题中写下确切的预期行为,您很可能会得到很好的答案..
  • 已更新。是的,从我目前测试的结果来看,后退按钮操作似乎是问题所在。

标签: javascript firefox onbeforeunload


【解决方案1】:

此代码在 Firefox 和 Chrome 中适用于我:

<script type="text/javascript">
window.onbeforeunload = confirmExit;
function confirmExit()
{
   return "Are you sure you want to leave?";
}
</script>

【讨论】:

  • 可能是浏览器的bug,你改代码了吗?如果是,请在您的帖子中更新您的上述代码,以便我再次查看:)
  • 谢谢。这是相同的代码,我在函数内部使用它,但我也在函数外部尝试过。似乎如果您重新加载页面并单击警报中的“离开”,然后按浏览器后退按钮,对话框开始循环。如果您此时按“停留”几次,您可能会中断循环,但如果您按“离开”,则循环继续,然后它只显示一个没有信息的对话框,只有一个取消和一个确定按钮,而 FF 需要一个力退出。
  • 你应该联系 mozilla,因为这看起来像一个浏览器错误,上面的代码是正确的,适用于 google chrome 和 safari,它适用于 mac 版本的 firefox(完全按照你的操作)所以我会说这是一个浏览器错误,我相信 mozilla 会很高兴听到它:)
  • 我会这样做的。我刚刚发现在这个网站上也是同样的问题。当您提出新问题并在发布前重新加载页面时,会弹出 onbeforeinload 警告。如果您离开,重新加载并回击,它也会开始循环这里。我也用 Firefox for Mac,我在两台电脑上都试过了,所以它一定是浏览器的错误。
猜你喜欢
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
相关资源
最近更新 更多