onbeforeunload根本不工作

时间:2016-06-03 11:38:19

标签: javascript

我有这段代码:

(function() {
      window.onbeforeunload = function () {
          alert("hi")
          console.log("unloading");
      };
})();

我也有这段代码:

window.addEventListener("beforeunload", function() {
   alert("hi")
   console.log("unloading")
});

它们似乎都不起作用。我想要做的就是在用户试图离开页面时进行记录,但这并没有发生(最新的Chrome,最新的Firefox,Edge ......),任何人都可以了解它为什么会这样做不工作?

4 个答案:

答案 0 :(得分:1)

  

自2011年5月25日起,HTML5规范声明要调用   window.alert(),window.confirm()和window.prompt()方法可能是   在此活动期间被忽略。有关更多信息,请参阅HTML5规范   细节。   另请注意,各种移动浏览器会忽略事件的结果   (也就是说,他们不会要求用户确认)。 Firefox有一个   在about:config中隐藏的偏好做同样的事情。本质上这个   表示用户始终确认可以卸载文档。

Source

此外,使用return语句在离开之前提示用户

window.addEventListener("beforeunload", function() {
   return "hi";
});

答案 1 :(得分:0)

这样做:

  window.onbeforeunload = function (e) {
          console.log("unloading");
          return "Hi";
      };

当页面卸载时会发出警告Hi并在控制台中打印unloading

答案 2 :(得分:0)



function myFunction() {
    return "Write something clever here...";
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body onbeforeunload="return myFunction()">
  
  </body>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

你必须从onbeforeunload返回:

(function() {
  window.onbeforeunload = function () {
      alert("hi")
      console.log("unloading");
      return null;
      };
    })();