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
Patricia ArquetteOriginal
2024-12-20 22:25:17473Durchsuche

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; 
});

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; 
});

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!

Stellungnahme:
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