Cómo actualizar la página si no hay actividad del usuario durante unos segundos usando javascript [duplicado]

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.

preguntado el 01 de junio de 12 a las 12:06

2 Respuestas

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

.triggerHandler requiere un parámetro... - alnitak

.trigger también requiere un parámetro ;-) - alnitak

el 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

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:

  1. eliminar cierres innecesarios
  2. 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 or haz tu propia pregunta.