2009-04-30 18 views
15

¿Alguien sabe de qué manera puedo usar javascript para verificar cuando la ventana del navegador está cerca y aparece un dailog de confirmación para preguntar si el usuario está confirmado para salir del navegador o cambiar su mente para quedarse?javascript para verificar cuando la ventana del navegador está cerca

+0

¿Por ventana del navegador te refieres a la ventana de la página o al navegador completo? –

+0

posible duplicado de [Evento de cierre de la ventana del navegador] (http://stackoverflow.com/questions/1631959/browser-window-close-event) –

Respuesta

23
window.onbeforeunload = function (e) { 
    var e = e || window.event; 

    //IE & Firefox 
    if (e) { 
    e.returnValue = 'Are you sure?'; 
    } 

    // For Safari 
    return 'Are you sure?'; 
}; 

https://developer.mozilla.org/en/DOM/window.onbeforeunload

+0

Probablemente debería ser 'return confirm ("¿Estás seguro? ...") ; ' – Anonymous

+1

@Anon nope, confirm() devuelve un valor booleano, se requiere su controlador para onbeforeunload para devolver una cadena. –

+0

Bueno, eso es un comportamiento peculiar. ¡Va a mostrar la frecuencia con que lo he usado! – Anonymous

1

Si el navegador sigue funcionando después de la página se cierra, y si el navegador procesa el "onbeforeunload" caso del elemento del cuerpo (a veces es desactivado), y si el el navegador permite ventanas emergentes o cuadros de mensaje y la capacidad de devolver falso de ese evento para evitar el cambio de página, entonces es posible.

Por ejemplo, comience a escribir un comentario en cualquier página de stackoverflow con Javascript habilitado y luego navegue fuera de esa página.

1

Esto funcionó para mí:

function closeWin(){ 
var exit = confirm("Do you want to leave this window?"); 
    if(exit==true){ 
     //do something before closing; 
    } 
}  

body onbeforeunload="closeWin()" 
0

Esto también funciona, a menos que para IE8

$(window).bind('beforeunload', function (e) { 
     // code to execute when browser is closed 
     e.$.post("func.php", { action: 'action', id_userMsg: '<?php echo $id_user; ?>' });  

    }); 
1

La documentación here alienta a la escucha de la onbeforeunloadcaso y/o la adición de un detector de eventos en window .

window.addEventListener('beforeunload', function(e) {}, false); 

también puede simplemente llenar los .onunload o .onbeforeunload propiedades de window con una función o una referencia función.

Aunque el comportamiento no está estandarizado en todos los navegadores, la función puede devolver un valor que el navegador mostrará cuando se abandone la página.

Cuestiones relacionadas