Heim > Web-Frontend > js-Tutorial > Wie kann ich das Schließen von Browserfenstern/-tabs zuverlässig erkennen, ohne dass es beim Absenden von Formularen ausgelöst wird?

Wie kann ich das Schließen von Browserfenstern/-tabs zuverlässig erkennen, ohne dass es beim Absenden von Formularen ausgelöst wird?

Patricia Arquette
Freigeben: 2024-12-20 22:25:17
Original
478 Leute haben es durchsucht

How Can I Reliably Detect Browser Window/Tab Closure Without Triggering on Form Submissions?

Bestimmen des Schließens von Browserfenstern/-tabs

F: Erfassen des Ereignisses zum Schließen von Browserfenstern/-tabs

Das würde ich gerne tun Erfassen Sie das Browserfenster-/Tab-Schließereignis, aber das jQuery-Ereignis „beforeunload“ wird auch bei Formularübermittlungen ausgelöst. Wie kann ich das Ereignis auf Fensterschließungen beschränken?

A: Fensterschließungsereignis isolieren

Während „beforeunload“ jede Seitenabweichung erkennt, können wir Formularübermittlungen und Hyperlinks ausschließen mit folgendem Code:

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

Für jQuery-Versionen < 1.7:

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

Hinweis: Diese Lösung verhindert die Bestätigungsaufforderung, wenn ein anderer Ereignishandler die Übermittlung oder Navigation abbricht. Um dieses Problem zu beheben, zeichnen Sie den Zeitpunkt der Sende-/Klickereignisse auf und prüfen Sie, ob „beforeunload“ mehr als ein paar Sekunden später auftritt.

Das obige ist der detaillierte Inhalt vonWie kann ich das Schließen von Browserfenstern/-tabs zuverlässig erkennen, ohne dass es beim Absenden von Formularen ausgelöst wird?. 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