setTimeout () срабатывает преждевременно при отображении оповещения () в Chrome - PullRequest
1 голос
/ 16 декабря 2010

У меня есть следующий код:

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

Который, по сути, вызывает бла через 15 минут загрузки страницы.

Однако, если в какой-то момент я показываю оповещение () или подтверждение (), то, как только он будет отклонен, по какой-то причине будет выполнен blah ().

Насколько я видел, это происходит только в Safari / Chrome. Это не происходит в IE / Firefox.

Есть идеи, что происходит, или даже лучше, как решить эту проблему?

Спасибо!
Daniel

Ответы [ 3 ]

2 голосов
/ 18 декабря 2010

Вы не одиноки, это ошибка: code.google.com / p / chromium / Issues / Detail? Id = 43796

1 голос
/ 08 марта 2012

Эта проблема не была решена командой 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);
}

надеюсь, это поможет.

0 голосов
/ 16 декабря 2010

Вы уверены, что это причина, я запустил эту демонстрацию и не могу ее воспроизвести.

"Тайм-аут!" появится через 10 секунд, нажмите на поле перед рукой, чтобы проверить.

http://jsfiddle.net/PFgaJ/

...