Das beforeunload
Ereignis wird ausgelöst, wenn der Benutzer Ihre Seite aus irgendeinem Grund verlässt.
Es wird beispielsweise ausgelöst, wenn der Benutzer ein Formular sendet, auf einen Link klickt, das Fenster (oder die Registerkarte) schließt oder über die Adressleiste, das Suchfeld oder ein Lesezeichen zu einer neuen Seite wechselt.
Sie können Formularübermittlungen und Hyperlinks (außer von anderen Frames) mit dem folgenden Code ausschließen:
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;
})
Versuchen Sie Folgendes für jQuery-Versionen, die älter als 1.7 sind:
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;
})
Die live
Methode funktioniert nicht mit dem submit
Ereignis. Wenn Sie also ein neues Formular hinzufügen, müssen Sie den Handler ebenfalls daran binden.
Beachten Sie, dass Sie die Bestätigungsaufforderung verlieren, wenn ein anderer Ereignishandler die Übermittlung oder Navigation abbricht, wenn das Fenster später tatsächlich geschlossen wird. Sie können dies beheben, indem Sie die Zeit in den submit
und click
Ereignissen aufzeichnen und überprüfen, ob beforeunload
dies mehr als ein paar Sekunden später geschieht.