ventana salir pestaña pagina navegador evitar evento ejecutar detectar cierre cerrar capturar antes alerta asp-classic

asp classic - salir - ¿Está capturando un evento de cierre de pestaña en el navegador web?



jquery al salir de la pagina (7)

¿Document.unload no lo hace si usted?

¿Hay alguna forma de saber si el usuario cierra una pestaña en un navegador web? Específicamente IE7, pero también Firefox y otros también. Me gustaría poder manejar esta situación desde nuestro código ASP si la pestaña actual que contiene nuestro sitio web se cierra.


Adjunte un evento "antes de la descarga ". Puede ejecutar código justo antes de que se cierre el navegador / pestaña.


Si necesita saber cuándo se cierra la página en el servidor, su mejor opción es hacer ping al servidor periódicamente desde la página (a través de XMLHttpRequest , por ejemplo). Cuando el ping se detiene, la página se cierra. Esto también funcionará si el navegador se bloqueó, se terminó o la computadora se apagó.


Como sugirió Eran Galperin, use antes de la onbeforeunload . Particularmente, devuelva una cadena, y esa cadena se incluirá en un cuadro de diálogo de confirmación que le permitirá al usuario elegir entre abandonar o no la página. Cada navegador incluye texto antes y después de la cadena que devuelve, por lo que debe probar en diferentes navegadores para ver qué se le presentaría a un usuario.



onbeforeunload también se invoca en los siguientes eventos:

* Close the current browser window. * Navigate to another location by entering a new address or selecting a Favorite. * Click the Back, Forward, Refresh, or Home button. * Click an anchor that refers the browser to another Web page. * Invoke the anchor.click method. * Invoke the document.write method. * Invoke the document.open method. * Invoke the document.close method. * Invoke the window.close method. * Invoke the window.open method, providing the possible value _self for the window name. * Invoke the window.navigate or NavigateAndFind method. * Invoke the location.replace method. * Invoke the location.reload method. * Specify a new value for the location.href property. * Submit a form to the address specified in the ACTION attribute via the INPUT type=submit control, or invoke the form.submit method.

Por lo tanto, si está intentando cerrar la sesión del usuario si cierra la pestaña o la ventana del navegador, terminará por cerrar sesión cada vez que haga clic en un enlace o envíe la página.


Santosh tiene razón, este evento se activará en muchas más acciones que simplemente haciendo clic en el botón de cerrar de su pestaña / navegador. Creé un pequeño hack para evitar que la acción onbeforeunload se active al agregar la siguiente función en el documento listo.

$(function () { window.onbeforeunload = OnBeforeUnload; $(window).data(''beforeunload'', window.onbeforeunload); $(''body'').delegate(''a'', ''hover'', function (event) { if (event.type === ''mouseenter'' || event.type === "mouseover") window.onbeforeunload = null; else window.onbeforeunload = $(window).data(''beforeunload''); }); });

Además, antes de activar cualquiera de los eventos mencionados por Santosh, debe ejecutar esta línea:

window.onbeforeunload = null;

Si no desea que se desencadene el evento.

Y aquí está la última pieza del código:

function OnBeforeUnload(oEvent) { // return a string to show the warning message (not every browser will use this string in the dialog) // or run the code you need when the user closes your page return "Are you sure you want to close this window?"; }