javascript - 当用户决定在 onbeforeunload 事件后留下时执行操作

标签 javascript settimeout setinterval onbeforeunload

这是我的问题...

一旦用户决定留下来,我想执行一个操作。 由于我没有直接的方法,因此我想使用 setTimeout 和 setInterval ,如下所示:

我使用 setInterval 每秒检查一次页面,如果 isOnBeforeUnload 变量为 true,则意味着用户通过绑定(bind)离开触发了 onbeforeunload 事件。

我想要发生的是数到 1 秒,假设一秒后页面尚未卸载 - 用户留下来。

window.onbeforeunload = function() {
                isOnBeforeUnload = true;
                return "You have an unsaved update!";
            };

window.timeout = setInterval(function() {

      if (isOnBeforeUnload) {
      var timeoutID = window.setTimeout(doClick, 1000);
      isOnBeforeUnload = false;
      }
   }, 1000);

function doClick() {
      //do some actions... 
      }

这段代码在 Chrome 和 IE 上运行良好,但在 FF 上不行...有人可以帮忙吗?我需要它在 IE9、10、11、Chrome 和 FF 上工作。

谢谢!

最佳答案

这是一个更简单的解决方案:

window.onbeforeunload = function () {
  setTimeout(function () {
    console.log('Stayed');
    // The user stayed, so do whatever you want
  }, 100);
  return 'Dont go!';
};

Demo 。它适用于 FF 和 Chrome。但我无法在 IE 中进行测试。

关于javascript - 当用户决定在 onbeforeunload 事件后留下时执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24850793/

相关文章:

javascript - 理解JavaScript中的async和await

javascript - Firefox 允许将桌面图像文件拖入 CKEditor

javascript - 类型错误 : Cannot read property currentTime of undefined

javascript setTimeout 或 jquery delay - 两者都不适合我

javascript - setInterval 函数在程序中只调用一次

asp.net - Javascript 检查表/asp.net 中的所有复选框

javascript - 强制定时更新 CSS 文件

javascript - 使用 CoffeeScript 将方法传递到 SetTimeOut

javascript - setInterval 和 css() jQuery

javascript - setInterval() 在 casper.run() 之后没有触发