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?
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!