ventana salir pestaña pagina objeto navegador evitar evento ejemplos detectar cierre cerrar capturar antes alerta abrir javascript javascript-events

javascript - salir - ¿Hay alguna forma de determinar si la ventana del navegador estaba cerrada?



javascript detectar cierre pestaña (8)

¿Cómo es posible identificar que se hizo clic en el botón de cerrar del navegador?


De la Referencia de eventos de JavaScript , la coincidencia más cercana parece ser el evento OnUnload. Sin embargo, esto también atrapa la navegación fuera de la página (y por lo tanto no desea que las funciones se ejecuten si el usuario realmente hace clic en un enlace).

No hay garantía de que el servidor reciba el mensaje de que la ventana del navegador está cerrada. Por ejemplo, el método más antiguo que implicaba crear una pequeña ventana emergente sería bloqueado por la mayoría de los navegadores modernos. Usar AJAX podría funcionar, pero una ventana del navegador puede cerrarse antes de intentar conectarse.


Esto es un truco, pero parece funcionar para mí. También podría ser específico de IE. Codigo para un entorno de solo IE.

<body onunload="if(self.screenTop>9000){unloadFunction();}">

Editado para agregar que mi descargaFunction abre una ventana emergente que mata la sesión del usuario. No puede hacer nada en la página que se cerró sola. porque ya está cerrado ;)


Estoy de acuerdo con northsouthwhat, pero ten en cuenta que antes de la descarga puede que no sea compatible con todos los navegadores en los que quieras usarlo.


Por lo general, hay un evento que se activa cuando el usuario abandona la página (¿descargar?); Esto puede ser específico del navegador.

También hay una propiedad, window.closed, que se establece en el objeto de la ventana después de que se cierra su ventana asociada. Esto se usa normalmente cuando tiene una referencia a una ventana emergente.

No estoy seguro de si el evento de descarga se disparará antes o después de que se establezca la propiedad "cerrada": tendrá que experimentar.

Puede ser que no pueda distinguir entre una ventana cerrada y un navegador que se ha ido a otro sitio.


deberías usar antes de la onbeforeunload , no en la onunload . IE 7 (y tal vez otros navegadores) no son 100% confiables cuando se trata de disparar el evento de unload , pero parece disparar siempre el evento beforeunload .

por ejemplo, window.onbeforeunload=function(){}

o, si está utilizando prototype.js: Event.observe(window, ''beforeunload'', function(){});


usted puede configurar una llamada ajax que periódicamente sondea su servidor cada pocos segundos a cada pocos minutos (dependiendo de la precisión de su tiempo deseado) y rastrea el lado del servidor del último intento. no es completamente preciso (por ejemplo, los problemas de red pueden causar un falso positivo), pero puede ser una opción dependiendo de sus requisitos.


Los navegadores no tienen un evento cerrado, por lo que no se puede saber realmente cuándo el usuario ha cerrado su navegador, existen algunas posibles soluciones en este hilo

Si nos deja saber lo que está tratando de lograr, puede haber una manera alternativa


sería esto:

$(window).unload( function () { alert("Bye now!"); } );

ayudarte ?

Sin embargo, está en jQuery.

sin embargo, debe consultar el enlace proporcionado por Demoli , que contiene más información sobre este método en particular (y su inconveniente).

editar: enlace agregado.