2011-07-08 21 views
15

Quiero capturar el evento de cierre del navegador en mi aplicación y mostrar un cuadro de confirmación al usuario. Estoy usando JSF 2.0 y richfaces 4.0.Cómo capturar el navegador cerrar evento?

+0

Esto no es una pregunta de Java (lo haría exactamente de la misma manera en Java que .NET o HTML/JS puro). –

Respuesta

1

Adjunte un controlador al evento unload.

+0

Intenté con el evento onbeforeunload. Pero el problema es que cuando actualizo la página o hago un envío de formulario, también se llama al evento onbeforeunload. – Lan

+0

No hay forma de distinguir entre esos; el navegador solo puede decirle que el documento actual está a punto de ser reemplazado. Eso no te da una idea * por qué * –

5

onbeforeunload

< body onbeforeunload="alert('Closing');"> 

Ejemplo:

<html> 
<head> 
<title>`onbeforeunload` Event Demo</title> 
</head> 
<body onbeforeunload="return 'Are you sure you want to exit ?';"> 
</body> 
</html> 
+0

el evento 'beforeunload' está destinado a devolver una' cadena'. [Docs] (https://developer.mozilla.org/en/DOM/window.onbeforeunload). – alex

+0

@Alex Gracias por la información. OP solo quiere una llamada de función –

6

utilizar el evento beforeunload.

window.onbeforeunload = function(event) { 

    event = event || window.event; 

    var confirmClose = 'Are you sure?'; 

    // For IE and Firefox prior to version 4 
    if (event) { 
     event.returnValue = confirmClose; 
    } 

    // For Safari 
    return confirmClose; 

} 

Tenga en cuenta que esto será fuego para otros eventos además de cerrar la ventana, como la recarga y el envío del formulario.

+1

¿Es lo mismo para Alt-F4, y cierra el navegador (pestaña o X) y también la tecla F5, la devolución de datos y la recarga? – Kiquenet

17
window.onbeforeunload = function() 
{ 
    var shallIAlertUser = Do_Whatever(); //get boolen value 
    if (shallIAlertUser) { 
    //this will alert user 
    return 'Are you sure?'; 
    } 
    else { 
    //this wont 
    window.onbeforeunload = undefined; 
    } 
}; 
Cuestiones relacionadas