Es necesario escuchar en el no -estándarse beforeunload
evento. Esto es compatible con casi todos los navegadores, se espera de Opera, que se sabe que cumple estrictamente con los estándares W3C.
Aquí está un ejemplo patada de salida:
window.onbeforeunload = function() {
return "Hey, you're leaving the site. Bye!";
};
Este mensaje se mostrará en una especie de diálogo de confirmación. Este mensaje se mostrará a la derecha antes de el cliente descarga la página. Puede ser un navegador cerrado, pero que también puede ser una acción de navegación simple, como hacer clic en un enlace o enviar un formulario en la página.
Lo más probable es que también desee desactivarlo (solo establecer en null
) cada vez que se hace clic en un enlace interno o se envía un formulario interno. Usted no quiere molestar a los usuarios finales con un comportamiento poco intuitivo. Puede hacerlo escuchando en el evento click
de los enlaces deseados y el evento submit
de los formularios deseados. jQuery puede ser de gran ayuda aquí, ya que hace que, en forma crossbrowsercompatible de manera que no es necesario escribir> 20 líneas de código JS para esto:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
window.onbeforeunload = function() {
return "You're leaving the site.";
};
$(document).ready(function() {
$('a[rel!=ext]').click(function() { window.onbeforeunload = null; });
$('form').submit(function() { window.onbeforeunload = null; });
});
</script>
Sólo es necesario dar a todos los enlaces externos el estándar de facto atributo rel="ext"
para indicar que esos son enlaces externos.
<a href="http://google.com" rel="ext">Google</a>
posible duplicado de [Llamar a algunos JavaScript cuando el usuario cierra una ventana (emergente)] (http://stackoverflow.com/questions/1333833/call-some-javascript-when-the-user-closes- a-popup-window) –
posible dupli cate de [javascript para verificar cuando la ventana del navegador está cerca] (http://stackoverflow.com/questions/805463/javascript-to-check-when-the-browser-window-is-close) – CMS