2010-12-16 3 views
1

У меня есть следующий код:SetTimeout() стрельбы преждевременно при показе оповещения() в Chrome

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

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

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

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

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

Спасибо!
Daniel

+0

Вы уверены, что `blah` вызывается из набора функций с` setTimeout`? Может быть, это называется где-то еще. – vsr 2010-12-16 19:14:57

+1

Не бывает для меня. Возможно, создайте небольшую страницу, на которой вы можете воспроизвести эту ошибку и попробуем? – muratgu 2010-12-16 19:19:25

ответ

0

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

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

http://jsfiddle.net/PFgaJ/

1

Эта проблема не была решена группой хрома.

Я обнаружил, что, введя некоторую задержку между 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); 
} 

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

 Смежные вопросы

  • Нет связанных вопросов^_^