【问题标题】:can't get onbeforeunload working in chrome无法在 chrome 中使用 onbeforeunload
【发布时间】:2012-01-19 21:41:33
【问题描述】:

我在这个网站上查看过类似的问题,但我不明白为什么这对我不起作用。

我安装了最新版本的 chrome。
我似乎无法让以下代码在 chrome 中运行,但它在 Firefox 中运行。

Hello World!

<script>
    window.onbeforeunload = function(){
        alert("brohan");
    }
</script>

【问题讨论】:

  • 您的代码实际上正在运行,问题是 Chrome 不允许在 onbeforeunload 中发出警报,而 Firefox 允许。

标签: javascript html google-chrome onbeforeunload


【解决方案1】:

要做你想做的事,你的脚本应该是这样的:

<script>
  window.onbeforeunload = function() {
    return "brohan";
  };
</script>

如果你也想告诉 Firefox 4+ 用户为什么你问他们(希望有用的消息是intentionally disabled),你可以采用这个解决方案:http://jsfiddle.net/ecmanaut/hQ3AQ/

【讨论】:

    【解决方案2】:

    可能晚了,但我想在这里添加一些更新:

    1. window.onbeforeunload 中的自定义消息仍然被 Firefox 故意禁用(我使用的是 35.0 版)。 :(
    2. @ecmanaut 提出的解决方法现在不起作用 - 似乎 Firefox 在 onbeforeunload 处理程序中禁用了window.alert。描述于here

    我自己在 Mac OS X 的 Firefox 35.0 中尝试过:

    var isFirefox = /Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) > 4;
    window.onbeforeunload = function(e) {
      if (isFirefox) {
        window.alert('You are in firefox. Leaving this page you may lose some data.');
        return '...';
      }
      else {
        return 'Leaving this page you may lose some data.';
      }
     }
    

    刷新/单击外部链接时,此 sn-p 不会触发 alert 函数,也不会触发浏览器的默认警报框。它只是离开页面。

    希望此消息对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      相关资源
      最近更新 更多