Я пытаюсь сделать страницу для движения в начальную страницу после, например, 10 секунд неактивности (пользователь, не нажимающий куда угодно). Я использую jQuery для остальных, но устанавливанием/очищением в моей тестовой функции является чистый JavaScript.
В моей фрустрации я закончил с чем-то вроде этого функция, что я надеялся, что мог обратиться, любой нажимает на страницу. Таймер запускается прекрасный, но не сбрасывается при щелчке. Если функция будет вызвана 5 раз в течение первых 10 секунд, то 5 предупреждений не появятся... никакой clearTimeout...
function endAndStartTimer() {
window.clearTimeout(timer);
var timer;
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}
Кто-либо получил некоторые строки кода, которые добьются цели? - на любой остановке щелчка, сбросе и запускают таймер. - Когда таймер совершает нападки, например, 10 секунд делают что-то.
Вам необходимо объявить таймер
вне функции. В противном случае вы получите новую переменную при каждом вызове функции.
var timer;
function endAndStartTimer() {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}
Проблема в том, что переменная таймера
является локальной, и ее значение теряется после каждого вызова функции.
Вам нужно сохранить его, вы можете поместить его вне функции или, если вы не хотите, чтобы переменная была глобальной, вы можете сохранить ее в закрытии , например:
var endAndStartTimer = (function () {
var timer; // variable persisted here
return function () {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
};
})();
Это потому, что таймер является локальной переменной к вашей функции.
Попробуйте создать его вне функции.