Heim > Web-Frontend > js-Tutorial > Wie kann ich Browserfenster-Schließereignisse erfassen, ohne sie bei Formularübermittlungen oder Hyperlinks auszulösen?

Wie kann ich Browserfenster-Schließereignisse erfassen, ohne sie bei Formularübermittlungen oder Hyperlinks auszulösen?

Susan Sarandon
Freigeben: 2024-12-07 12:56:14
Original
551 Leute haben es durchsucht

How Can I Capture Browser Window Close Events Without Triggering on Form Submissions or Hyperlinks?

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; 
});
Nach dem Login kopieren

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; 
});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage