son que navegador los ejemplos detectar cuales comandos javascript javascript-events session-timeout

javascript - que - innerhtml



Detectar la inactividad del usuario en un navegador, Ășnicamente a travĂ©s de javascript (2)

El problema con el enfoque que sugiere es que la sesión se apaga, incluso si el usuario está moviendo el mouse o escribiendo una entrada. Por lo tanto, si tiene un tiempo de espera de sesión establecido en 20 minutos, y el usuario continúa escribiendo durante 21 minutos, la sesión seguirá expirando, aunque hayan estado "activas". Lo único que evitará que la sesión se agote es una nueva solicitud al servidor.

Solución 1: dejar que el servidor controle el tiempo de espera de la sesión

A menos que esté realizando solicitudes de Ajax en segundo plano, que continuarán renovando la sesión, podría establecer un tiempo de espera de JavaScript cuando se cargue la página y alertar al usuario de esa manera. A menos que haga otras solicitudes al servidor, mientras el usuario está en su página, no hay necesidad de hacerlo difícil:

setTimeout(function () { alert("You''ve timed out baby!"); }, 1200000); // 20 minutes in millisec (modify to your session timeout)

Si el usuario visita otra página o vuelve a cargar la página, la sesión se renueva y se reinicia el temporizador de JavaScript. Si el usuario no hace tal cosa, la sesión expirará al mismo tiempo que el usuario recibe su alerta.

Solución 2: dejar que el cliente controle el tiempo de espera de la sesión

Si desea que el JavaScript controle completamente la duración de la sesión, para que se renueve cada vez que el usuario escribe, mueve el mouse o lo que sea, tendrá que seguir haciendo solicitudes de Ajax en segundo plano a su servidor, por lo que La sesión se renueva. (Eso podría ser una solicitud ficticia vacía, solo algo que llega al servidor)

A continuación, tendrá que realizar un seguimiento de todas las acciones que considere "actividad del usuario" (AnhSirk sugiere una forma en su respuesta) y restablecer el temporizador de tiempo de espera cada vez que ocurra tal evento. Si el usuario está inactivo durante demasiado tiempo, tendrá que realizar una solicitud Ajax a una página en el servidor, lo que invalida la sesión, y luego puede alertar al usuario que la sesión ha caducado.

Esta pregunta ya tiene una respuesta aquí:

En la construcción de un monitor, que monitorearía cualquier actividad en el navegador por parte del usuario, como hacer clic en un botón o escribir en un cuadro de texto (no el mouse sobre el documento). Por lo tanto, si el usuario no realiza ninguna actividad durante mucho tiempo, la sesión expirará.

Tenemos que hacerlo sin jquery ni nada por el estilo. Puedo usar ajax. java servlet en otro extremo es preferible.


Esta es una forma pura de JavaScript para rastrear el tiempo de inactividad y cuando alcanza cierto límite, realice alguna acción, puede modificarlo y usarlo.

var IDLE_TIMEOUT = 60; //seconds var _idleSecondsCounter = 0; document.onclick = function() { _idleSecondsCounter = 0; }; document.onmousemove = function() { _idleSecondsCounter = 0; }; document.onkeypress = function() { _idleSecondsCounter = 0; }; window.setInterval(CheckIdleTime, 1000); function CheckIdleTime() { _idleSecondsCounter++; var oPanel = document.getElementById("SecondsUntilExpire"); if (oPanel) oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + ""; if (_idleSecondsCounter >= IDLE_TIMEOUT) { alert("Time expired!"); document.location.href = "logout.html"; } }

Este código esperará 60 segundos antes de mostrar la alerta y la redirección, y cualquier acción "restablecerá" la cuenta: clic del mouse, movimiento del mouse o pulsación de tecla.

Debe ser el navegador más cruzado posible, y sencillo. También admite mostrar el tiempo restante, si agrega un elemento a su página con el ID de SecondsUntilExpire.

Ref: ¿Cómo saber el tiempo de inactividad del navegador?