2011-07-08 15 views
15

Chcę przechwycić zdarzenie zamknięcia przeglądarki w mojej aplikacji i wyświetlić pole potwierdzenia użytkownikowi. Używam JSF 2.0 i richfaces 4.0.Jak przechwytywać zdarzenie zamknięcia przeglądarki?

+0

To nie jest pytanie Java (zrobiłbyś to dokładnie tak samo w Javie jak .Net lub czysty HTML/JS). –

Odpowiedz

1

Dołącz uchwyt do zdarzenia unload.

+0

Próbowałem z zdarzenia onbeforeunload. Problem polega jednak na tym, że odświeżam stronę lub przesyłam formularz, a także wywołuję zdarzenie onbeforeunload. – Lan

+0

Nie ma sposobu na odróżnienie tych; przeglądarka może tylko powiedzieć, że bieżący dokument zostanie wkrótce zastąpiony. To nie daje wyobrażenia * dlaczego * –

5

onbeforeunload

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

przykład:

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

Zdarzenie 'beforeunload' ma zwrócić' ciąg'. [Dokumenty] (https://developer.mozilla.org/en/DOM/window.onbeforeunload). – alex

+0

@Alex Dzięki za informacje. OP po prostu chce wywołać funkcję –

6

pomocą zdarzeń 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; 

} 

Należy pamiętać, że będzie to pożar w przypadku innych zdarzeń oprócz zamknięcia okna, takich jak ponowne załadowanie i przesłanie formularza.

+1

Czy to samo dla Alt-F4, i zamknąć nawigator (tabulator lub X) i klawisz F5, odświeżenie i przeładowanie? – 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; 
    } 
}; 
Powiązane problemy