当用户决定在onbeforeunload事件之后停留时执行操作

时间:2014-07-20 13:06:07

标签: javascript settimeout setinterval onbeforeunload

这是我的问题......

我希望在用户决定留下后执行操作。 由于我没有这样做的直接方式,我想使用setTimeout和setInterval如下:

我使用setInterval每秒检查一次页面,如果isOnBeforeUnload var为true,则表示用户通过绑定离开来触发onb​​eforeunload事件。

我想要发生的事情是计数到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上工作。

谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

Demo。它适用于FF和Chrome。不过,我无法在IE中测试。