Chciałbym na jednej stronie HTML dodać potwierdzenie opuszczenia strony. W internecie znalazłem kilka gotowców, które tak naprawdę był tą samą implementacją. Na StackOverflow nieraz pojawia się to pytanie i zawsze proponują to samo.
Zastosowałem jeden taki gotowiec, teoretycznie najbardziej uniwersalny, ale działa to tak sobie:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
Page exit confirm test.
<a href="www.google.com">Link</a>
<script type="text/javascript">
function goodbye(e)
{
if(!e) e = window.event;
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = 'You sure you want to leave?'; //This is displayed on the dialog
//e.stopPropagation works in Firefox.
if (e.stopPropagation)
{
e.stopPropagation();
e.preventDefault();
}
}
window.onbeforeunload = goodbye;
</script>
</body>
</html>
Jak testowałem to wydawało mi się, że raz nie zadziałał, więc postanowiłem przetestować różne scenariusze w dwóch przeglądarkach i dwóch systemach i faktycznie w jednym przypadku działa, w drugim nie działa.
Pytanie jest bardzo proste: Jak wymusić potwierdzenie opuszczenia strony i jak to jest najczęściej robione, żeby działało? Może w tych gotowcach z internetu czegoś brakuje lub są dostosowane do starych wersji przeglądarek i dlatego nie zawsze działają?
Próbowałem przenieść e.preventDefault();
poza if (e.stopPropagation)
, ale to nic nie zmienia.
Firefox i Chrome na komputerze z Ubuntu Linux:
Otwieram stronę, potem zamykam przeglądarkę - nie działa
Otwieram stronę, klika ma jej powierzchni, potem zamykam przeglądarkę - działa
Otwieram stronę, otwieram nową zakładkę, zamykam poprzednią - nie działa
Otwieram stronę, klika ma jej powierzchni, otwieram nową zakładkę, zamykam poprzednią - działa
Otwieram stronę, klika na jej powierzchni i naciskam klawisz F5 - działa
Otwieram stronę, klikam myszką okrągłą strzałkę w celu odśnieżenia - nie działa
Otwieram stronę, klikam zawarty w niej link - działa
Firefox na komputerze
Otwieram stronę, naciskam klawisz F5 - nie działa
Chrome na komputerze
Otwieram stronę, naciskam klawisz F5 - działa
Firefox i Chrome na telefonie z Android
Otwieram zakładkę, w niej wczytuję stronę i zamykam zakładkę - nie działa
Otwieram zakładkę, w niej wczytuję stronę, klikam na niej palcem i zamykam zakładkę - nie działa
Otwieram stronę i odświeżam przyciskiem z okrągłą strzałką - nie działa
Otwieram stronę, klikam na niej i odświeżam przyciskiem z okrągłą strzałką - działa
Otwieram stronę i kliknięcie zawartego w niej linku - działa
Otwieram stronę w nowej karcie, a potem otwieram inną z ulubionych - nie działa
Chrome na telefonie
Otwieram stronę i odświeżam poprzez przeciągnięcie palcem - działa
Otwieram stronę w nowej karcie, klikam na niej palcem, potem otwieram inną z ulubionych - działa
Firefox na telefonie
Otwieram stronę w nowej karcie, klikam na niej palcem, potem otwieram inną z ulubionych - nie działa