Heim >Web-Frontend >js-Tutorial >Wie kann ich Browserfenster-Schließereignisse erfassen, ohne sie bei Formularübermittlungen oder Hyperlinks auszulösen?
Erfassen des Browserfenster-Schließereignisses unter Ausschluss von Formularübermittlungen und Hyperlinks
Das beforeunload-Ereignis in jQuery dient dazu, zu erkennen, wenn ein Benutzer eine Seite verlässt . Dieses Ereignis wird jedoch auch bei der Formularübermittlung ausgelöst, was in bestimmten Szenarien möglicherweise nicht wünschenswert ist. In diesem Artikel wird ein Ansatz untersucht, um Formularübermittlungen und Hyperlinks (außer aus anderen Frames) vom beforeunload-Ereignis auszuschließen.
Um dies zu erreichen, initialisieren wir zunächst eine Variable inFormOrLink auf false. Wenn ein Benutzer auf einen Hyperlink klickt oder ein Formular absendet, setzen wir inFormOrLink auf true.
Im beforeunload-Ereignishandler überprüfen wir den Wert von inFormOrLink. Wenn dies zutrifft, fordern wir den Benutzer mit der Meldung „Möchten Sie wirklich schließen?“ zur Bestätigung auf. Wenn umgekehrt inFormOrLink falsch ist, geben wir null zurück, um die Bestätigungsaufforderung zu unterdrücken.
Hier ist ein überarbeiteter Codeausschnitt für jQuery-Versionen 1.7 und höher:
var inFormOrLink = false; $('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; });
Für jQuery-Versionen unter 1.7 verwenden Sie der folgende Code:
var inFormOrLink = false; $('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; });
Dieser Ansatz erfasst effektiv das Browserfenster-Schließereignis und schließt Formularübermittlungen aus Hyperlinks (außer aus anderen Frames).
Das obige ist der detaillierte Inhalt vonWie kann ich Browserfenster-Schließereignisse erfassen, ohne sie bei Formularübermittlungen oder Hyperlinks auszulösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!