Erfassen von Browserfenster-Schließereignissen ohne Formularinterferenz
Es ist üblich, ein Ereignis zu wünschen, das speziell dann ausgelöst wird, wenn ein Browserfenster (oder eine Registerkarte) geschlossen wird . Allerdings reagiert auch das Ereignis beforeunload, das typischerweise zu diesem Zweck genutzt wird, auf Formularübermittlungen. Wie können wir formularbezogene Aktionen vom Auslösen dieses Ereignisses ausschließen?
Antwort:
Das beforeunload-Ereignis wird immer dann ausgelöst, wenn der Benutzer die aktuelle Seite verlässt, unabhängig vom Grund . Dazu gehören Formularübermittlungen, Linkklicks und die direkte Navigation zu einer anderen Seite. Um diese Aktionen auszuschließen, können wir den folgenden Code nutzen:
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; })
Alternativ wird bei Verwendung von jQuery-Versionen vor 1.7 Folgendes empfohlen:
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; })
In dieser Lösung wann Wenn der Benutzer auf einen Hyperlink klickt oder ein Formular sendet, wird ein Flag inFormOrLink auf „true“ gesetzt. Während des Beforeunload-Ereignisses wird dieses Flag überprüft, und wenn es falsch ist, wird das Ereignis nicht erfasst.
Wichtiger Hinweis:
Es ist zu beachten, dass andere Ereignishandler dies möglicherweise tun Verhindern Sie das Absenden von Formularen oder die Navigation. In solchen Fällen wird das Ereignis „beforeunload“ immer noch ausgelöst, wenn das Fenster geschlossen wird, was dazu führt, dass eine Bestätigungsaufforderung verloren geht. Um dies zu mildern, erfassen Sie die Zeit in Klick- und Übermittlungsereignissen und prüfen Sie, ob der Vorab-Entladevorgang wesentlich später erfolgt, um die Bewältigung solcher Situationen zu ermöglichen.
Das obige ist der detaillierte Inhalt vonWie erfasst man Ereignisse beim Schließen von Browserfenstern, ohne dass die Formularübermittlung beeinträchtigt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!