Я искал здесь и нашел быстрое решение для вызова действия, когда пользователь бездействует на странице. Это в основном хорошо работает во всех браузерах.
Но когда я использую предупреждение или диалоговое окно подтверждения на странице, в Google Chrome возникает странная проблема.
После того, как окно предупреждения или подтверждения исчезает (нажата OK, Отмена или Перекресток), функция ожидания неожиданно работает.
- После того, как окно подтверждения или оповещения исчезло, которое появилось после щелчка ссылки, я сразу получил окно «3 секунды прошло»
Проверено на FF, IE и Chrome (последняя версия). Это просто происходит в Chrome.
Мой код здесь:
http://jsbin.com/ifule3
window.onload = idleTimer;
function idleTimer() {
var idleDuration;
document.onmousemove = idleReset;
function idleReset() {
if (idleDuration) {
clearTimeout(idleDuration);
idleDuration = 0;
}
idleDuration = setTimeout(function() {
alert('3 seconds passed.');
}, 3000)
}
};
<a onclick="if(confirm( '?' )) { alert('Ok Pressed.') } else { return false; };">First Link!</a>
<a onclick="alert('test');" >Second Link!</a>
Кажется, моего объяснения недостаточно: /
Я изменил код с помощью jQuery;
jQuery(document).ready(function() {
var idleDuration;
jQuery(document).mousemove(function() {
if (idleDuration) {
clearTimeout(idleDuration);
idleDuration = 0;
}
idleDuration = setTimeout(function() {
someIdleAction();
window.location = 'some url';
}, 3000)
})
});
Когда я размещаю этот код на своей странице. Он работает как шарм.
Я открываю страницу, делаю какие-то действия с мышью или нет, затем через 3 секунды, не двигая мышь, я получил предупреждение о простое. Это то, что мне нужно.
Когда я помещаю ссылку, которая просто вызывает окно предупреждения и щелкаю по нему, появляется окно предупреждения.
Затем я закрываю коробку и получаю предупреждение о простое, которое «прошло 3 секунды».
<a onclick="if(confirm( 'Are you OK?' )) { alert('Nice.') } else { return false; };">First Link!</a>
<a onclick="alert('An alert.');" >Second Link!</a>
Это происходит только в Google Chrome. С IE и FF все нормально.
Увеличение таймаута ничего не меняет.