Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onbeforeunload根本不工作_Javascript - Fatal编程技术网

Javascript onbeforeunload根本不工作

Javascript onbeforeunload根本不工作,javascript,Javascript,我有以下代码: (function() { window.onbeforeunload = function () { alert("hi") console.log("unloading"); }; })(); window.addEventListener("beforeunload", function() { alert("hi") console.log("unloading") }); 我还有以下代码:

我有以下代码:

(function() {
      window.onbeforeunload = function () {
          alert("hi")
          console.log("unloading");
      };
})();
window.addEventListener("beforeunload", function() {
   alert("hi")
   console.log("unloading")
});
我还有以下代码:

(function() {
      window.onbeforeunload = function () {
          alert("hi")
          console.log("unloading");
      };
})();
window.addEventListener("beforeunload", function() {
   alert("hi")
   console.log("unloading")
});
它们似乎都不起作用。我只想在用户试图离开页面时记录日志,但这并没有发生(最新的Chrome、最新的Firefox、Edge……),有人能解释一下它为什么不工作吗?

这样做:

  window.onbeforeunload = function (e) {
          console.log("unloading");
          return "Hi";
      };
当页面卸载时,它将发出警报
Hi
,并在控制台中打印
卸载

自2011年5月25日起,HTML5规范规定 可以使用window.alert()、window.confirm()和window.prompt()方法 在此事件中被忽略。有关更多信息,请参见HTML5规范 细节。 还请注意,各种移动浏览器都会忽略事件的结果 (也就是说,他们不要求用户确认)。Firefox有一个 在about:config中隐藏首选项以执行相同操作。本质上 表示用户始终确认可以卸载文档

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

window.addEventListener("beforeunload", function() {
   return "hi";
});
函数myFunction(){
return“在这里写一些聪明的东西…”;
}

您必须从onbeforeunload返回:

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

不管怎样,
alert()
都不会显示,这样做效果很好。我猜它在那种状态下被阻止了(点击run多次并观看控制台)我不想提示用户,我只想截获事件并根据it@mariostoilov您是否找到了一种在不提示用户的情况下显示并调用函数的解决方案?我想不起来是否找到了。我已经离开了需要这段代码的项目很久了。我不想提示用户,我只想拦截事件并根据它做一些事情。你到底想做什么?我想检查页面是否真的询问用户是否想离开页面。我注意到在Firefox中测试这一点是断断续续的,好像它记得我的答案离开页面。当我在IE中测试时,它始终显示console.log、返回字符串的对话框,甚至警报框。你可以“做一些事情”,但正如你所看到的,“警报”可能不起作用