ventana una salir recarga que pagina modal evitar evento ejecutar detectar cuando como cierren cierra cerrar capturar abandono javascript session session-timeout browser-tab

javascript - salir - ¿Cómo se puede mostrar una advertencia de tiempo de espera de sesión que sea lo suficientemente inteligente como para manejar múltiples navegadores abiertos o pestañas?



jquery al salir de la pagina (3)

Debería verificar el estado de la sesión en el servidor utilizando Ajax y realizar un seguimiento de todas las sesiones / ventanas abiertas que tiene el usuario. Luego, podrá orientar solo una de las sesiones disponibles con la advertencia de cierre de sesión.

En respuesta a tu comentario:

No use el mecanismo de sesión integrado, diseñe el suyo utilizando una matriz presistente del lado del servidor o un registro de la base de datos.

No, nada en la solicitud HTTP le dice cuántos navegadores están abiertos, pero puede asignar su propia cookie sessionID a medida que el usuario abre cada ventana del navegador. Haga una llamada Ajax al servidor, vea si el usuario ha agotado el tiempo de espera y si es la entrada más baja (o última) en el registro de la sesión, entonces usted es el navegador que recibe la advertencia.

Implementé una advertencia de tiempo de espera de la sesión utilizando javascript que simplemente le pregunta al usuario si desea extender su sesión o cerrar la sesión. El problema es que esto es para un portal de intranet donde los usuarios avanzados a menudo tendrán varias ventanas o pestañas del navegador abiertas al mismo tiempo para la aplicación. Actualmente, se les indicará que están a punto de cerrar la sesión desde todas las ventanas del navegador. ¿Cómo puedo hacer que el código sea más inteligente para detectar que están usando activamente otra sesión de navegador?


¿Esto funcionaría?

Almacene una cookie Javascript y verifique eso para determinar si la sesión se ha extendido en otra pestaña.

parece que esto funciona ...


No puede contar con que todas las pestañas / ventanas formen parte de la misma sesión, ya que podrían generarse y estar contenidas en procesos separados y usted no tiene mucho control sobre eso.

Pero si su código hace referencia a una cookie de Javascript, puede verificar su estado de pseudo-sesión a través de una devolución de datos (AJAX síncrono o asincrónico). Pero luego depende de que las cookies estén habilitadas en el navegador del usuario.