beforeunloadZdarzenie pożary, gdy użytkownik opuszcza stronę z jakiegokolwiek powodu.
Na przykład zostanie uruchomiony, jeśli użytkownik wyśle formularz, kliknie łącze, zamknie okno (lub kartę) lub przejdzie do nowej strony za pomocą paska adresu, pola wyszukiwania lub zakładki.
Możesz wykluczyć przesyłanie formularzy i hiperłącza (z wyjątkiem innych ramek) za pomocą następującego kodu:
var inFormOrLink;
$('a').on('click', function() { inFormOrLink = true; });
$('form').on('submit', function() { inFormOrLink = true; });
$(window).on("beforeunload", function() {
return inFormOrLink ? "Do you really want to close?" : null;
})
W przypadku wersji jQuery starszych niż 1.7 spróbuj tego:
var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });
$(window).bind("beforeunload", function() {
return inFormOrLink ? "Do you really want to close?" : null;
})
Ta livemetoda nie działa ze submitzdarzeniem, więc jeśli dodasz nowy formularz, będziesz musiał również powiązać z nim procedurę obsługi.
Zauważ, że jeśli inny program obsługi zdarzeń anuluje przesyłanie lub nawigację, utracisz monit o potwierdzenie, jeśli okno zostanie faktycznie zamknięte później. Można to naprawić poprzez rejestrowanie czasu w submiti clickwydarzeń, a także sprawdzanie, czy beforeunloaddzieje się więcej niż kilka sekund później.