1

我有以下代码:

t = setTimeout(function () { blah();  }, 900000);

基本上,在页面加载 15 分钟后调用 blah。

但是,如果在某个时候我显示了一个 alert() 或一个 confirm(),那么一旦它被解除,blah() 就会由于某种原因被执行。

据我所知,这只发生在 Safari/Chrome 中。它不会发生在 IE/Firefox 中。

任何想法发生了什么,甚至更好,如何解决这个问题?

谢谢!
丹尼尔

4

3 回答 3

2

你并不孤单,这是错误:code.google.com/p/chromium/issues/detail ?id=43796

于 2010-12-18T02:29:33.690 回答
1

Chromium 团队还没有解决这个问题。

我发现,通过在 clearTimeout 和 setTimeout 之间引入一些延迟,可以解决问题。

// mouse event
document.onmousemove = function(){
  clearTimeout(timeout);
  debug("Idle Timer reinitialized"); // apparently this function introduces some delay. it just works. You may want to include another timer here like for 2-3 seconds.
  timeout = setTimeout(logoutNow, systemTimeout);
}

希望能帮助到你。

于 2012-03-08T02:54:05.397 回答
0

你确定是这个原因吗,我运行了这个演示并且无法复制它。

“超时!” 10秒后会出现,点击手前的方框进行测试。

http://jsfiddle.net/PFgaJ/

于 2010-12-16T19:21:11.253 回答