Intento hacer una página para ir a la página de inicio después de, por ejemplo. 10 segundos de inactividad (el usuario no hace clic en ningún lado). Utilizo jQuery para el resto, pero el set / clear en mi función de prueba son javascript puro.
En mi frustración, terminé con algo como esta función a la que esperaba poder llamar con cualquier clic en la página. El temporizador comienza bien, pero no se reinicia con un clic. Si se llama a la función 5 veces en los primeros 10 segundos, aparecerán 5 alertas ... no clearTimeout ...
function endAndStartTimer() {
window.clearTimeout(timer);
var timer;
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}
¿Alguien tiene algunas líneas de código que funcionarán? - en cualquier clic de detener, reiniciar e iniciar el temporizador. - Cuando llega el temporizador, por ejemplo. 10 segundos haz algo.
fuente
El problema es que la
timer
variable es local y su valor se pierde después de cada llamada de función.Debe conservarlo, puede ponerlo fuera de la función, o si no desea exponer la variable como global, puede almacenarlo en un cierre , por ejemplo:
fuente
Eso es porque el temporizador es una variable local de su función.
Intente crearlo fuera de la función.
fuente
Una forma de usar esto en reaccionar:
Útil si solo desea llamar a una API después de que el usuario haya dejado de escribir, por ejemplo. La función userTimeout podría vincularse a través de onKeyUp a una entrada.
fuente
No estoy seguro de si esto viola alguna regla de codificación de buenas prácticas, pero generalmente salgo con esta:
Esto evita la necesidad de declarar el temporizador fuera de la función.
EDITAR: esto tampoco declara una nueva variable en cada invocación, pero siempre recicla lo mismo.
Espero que esto ayude.
fuente
Esto funciona bien. Es un gerente que he creado para manejar eventos. Tiene eventos para retener y para cuando los dejas ir.
El parámetro del elemento es el que tienes. El parámetro func se activa cuando se mantiene durante una cantidad de milisegundos especificada por el parámetro hold. El parámetro clearfunc es opcional y, si se proporciona, se activará si el usuario suelta o abandona el elemento. También puede hacer algunas soluciones para obtener las funciones que desea. ¡Disfrutar! :)
fuente
Ejemplo práctico ¡Usando Jquery para un menú desplegable! Al pasar el mouse sobre #IconLoggedinUxExternal, muestra div # ExternalMenuLogin y establece el tiempo de espera para ocultar el div # ExternalMenuLogin
Al pasar el mouse sobre div # ExternalMenuLogin, cancela el tiempo de espera. Con el mouse en div # ExternalMenuLogin, establece el tiempo de espera.
El punto aquí es siempre invocar clearTimeout antes de establecer el tiempo de espera, por lo tanto, evitar llamadas dobles
fuente