ejemplo - JavaScript+onbeforeunload
onbeforeunload ejemplo (6)
Tengo una consulta sobre mi solicitud. Siempre que el usuario cierre la ventana del navegador accidentalmente, quisiera hacer algunas operaciones de limpieza antes de eso. He utilizado el evento de descarga pero el problema es que este evento a veces se está activando y otras veces no. ¿Qué debo hacer? ¿Hay una mejor manera de manejar este tipo de problema?
Desde mi experiencia onunload funciona de manera diferente en diferentes navegadores. ¿Por qué no usas otro controlador de eventos llamado onbeforeunload en su lugar? Deberia de funcionar. Onbeforeunload se ejecutará primero antes de que se cierre la ventana, por lo que debería resolver su problema.
Esta es una de mis respuestas que le da la opción de descargarse solo si el usuario desea cerrar la ventana y también secuestrar el mensaje del navegador hasta cierto punto ...
<html>
<head>
<script src=''http://code.jquery.com/jquery-1.6.2.min.js''></script> <!--this is get jquery header file its not required but i have used jquery for minor correction-->
<script type="text/javascript" src="http://fbug.googlecode.com/svn/lite/branches/firebug1.4/content/firebug-lite-dev.js"></script><!--this will give a firebug to check the console in IE-->
<script language=''javascript''>
window.onbeforeunload = function(evt){
var message = "";
var is_chrome = navigator.userAgent.toLowerCase().indexOf(''chrome'') > -1; //validating the browser where its chrome or not
if(is_chrome){
message = "Do you want to close the browser or not?";
}
if(this.flag == 1 || $(''#help'').css(''background-color'') == ''red''){
console.log("red");
return message;
} else { console.log("blue"); return NULL;}
}
function change(){
$(''#help'').css(''background-color'',''red'');
this.flag = 1;
}
</script>
</head>
<body>
<a id=''help'' onclick=change() title="please click on Links">Links</a>
</body>
</html>
Creo que podría ser útil para cualquier cuerpo gracias .....
Esto funciona:
window.onbeforeunload = function(){
console.log(''closing shared worker port...'');
return ''Take care now, bye-bye then.'';
};
Esto es útil si, por ejemplo, está trabajando con SharedWorkers y necesita decirle al trabajador que hay un puerto menos para administrar; de lo contrario, podría terminar de actualizar una pestaña del navegador y obtener algo así como "Conectado exitosamente con: 10 otras pestañas "porque una pestaña mantiene al trabajador con vida mientras que las actualizaciones de la otra pestaña siguen presionando nuevas conexiones de puerto a su matriz.
Espero que esto ayude.
Esto no está permitido por razones de seguridad. onbeforeunload es una API de navegador que tiene diferentes comportamientos en diferentes navegadores.
Tratar:
window.onbeforeunload = function() { ...your code... }
window.onbeforeunload = function() {
return ''You have unsaved changes!'';
}
Vea el artículo de MSDN en onbeforeunload
También hay una pregunta similar en SO