Cómo actualizar la página si no hay actividad del usuario durante unos segundos usando javascript [duplicado]
Frecuentes
Visto 12,925 equipos
8
Posible duplicado:
Cómo modificar este código para que solo redireccione si no hay movimiento del mouse
Quiero actualizar una página web si no hay actividad por parte del usuario usando Javascript. Actividad del usuario como en Pulsación de tecla o clic del ratón.
2 Respuestas
16
Aquí un ejemplo básico
(function(seconds) {
var refresh,
intvrefresh = function() {
clearInterval(refresh);
refresh = setTimeout(function() {
location.href = location.href;
}, seconds * 1000);
};
$(document).on('keypress click', function() { intvrefresh() });
intvrefresh();
}(15)); // define here seconds
Esto actualizará la página cada 15 segundos sin presionar una tecla o un evento de clic (pero si tiene los mismos eventos definidos en otro lugar haciendo un stopPropagation()
esto no funcionará correctamente porque el evento no podrá alcanzar el elemento)
Respondido 23 Abr '15, 08:04
6
Crear un temporizador (setTimeout
) que actualizará la página, y cada vez que presione una tecla o presione el mouse, simplemente reinicie el temporizador.
Ver esta pregunta para el código que hace la mayor parte de lo que quieres.
FWIW, aquí está la respuesta de F.Calderan reescrita a:
- eliminar cierres innecesarios
- separar el DE ACTUAR! del desplegable repetición, suministrando la acción como una devolución de llamada
--
function setIdle(cb, seconds) {
var timer;
var interval = seconds * 1000;
function refresh() {
clearInterval(timer);
timer = setTimeout(cb, interval);
};
$(document).on('keypress click', refresh);
refresh();
}
setIdle(function() {
location.href = location.href;
}, 15);
contestado el 23 de mayo de 17 a las 13:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery html or haz tu propia pregunta.
.triggerHandler
requiere un parámetro... - alnitak.trigger
también requiere un parámetro ;-) - alnitakel código en la respuesta vinculada es más limpio (en mi humilde opinión) porque no se basa en desencadenar un evento falso para iniciar el ciclo, y también utiliza la captura en lugar de burbujear. - alnitak
ok, podría mejorar un poco... no más disparadores falsos ahora. - Fabricio Calderan
El código no funcionaba para mí con "presionar una tecla, hacer clic", necesitaba eliminar la coma para que fuera "presionar una tecla, hacer clic". jQuery solo manejaba el evento de clic y no la pulsación de tecla. - Satores