2 Stimmen

Erkennung des Schließens von Browsern/Tabs mit Javascript (oder einer anderen Sprache)

Ich habe an verschiedenen Stellen nach dieser Frage gesucht, aber alles, was dort erwähnt wird, ist die Verwendung von Javascript window.unload y window.onbeforeunload . Außerdem funktioniert es in Chrome meistens nicht, da es blockiert wird.

Wie schafft es Google dann, dies zu tun? Wenn wir eine E-Mail verfassen und versehentlich die Registerkarte schließen, fordert uns Google mit einem "Sind Sie sicher?"-Feld auf.

Kann mir jemand weiterhelfen?

Was ich eigentlich tun möchte, ist, den Benutzer um eine Bestätigung zu bitten, wenn er das Formular ausfüllt und versehentlich auf die Registerkarte "Schließen" klickt. Wenn ja, erlaube ich ihm, weg zu navigieren, sonst bleibt er auf der Seite und füllt sein Formular weiter aus.

7voto

Peter Aron Zentai Punkte 10582

Ich habe es getestet, und das auf MDN veröffentlichte Beispiel funktioniert in Chrome einwandfrei.

<script>
    window.onbeforeunload = function (e) {
        e = e || window.event;

        // For IE and Firefox prior to version 4
        if (e) {
            e.returnValue = 'Any string';
        }

        // For Safari
        return 'Any string';
    };

    function formSubmit() {
      window.onbeforeunload = null; 
   }
</script>

...

   <form onsubmit="formSubmit()">...</form>

Auf diese Weise wird ein Dialog geöffnet, der nicht von einem Popup-Blocker blockiert wird, da er durch einen Klick des Benutzers entsteht.

2voto

Joel Purra Punkte 22337

Wenn Sie einen Benutzer nur dann fragen möchten, ob er die Seite verlassen möchte, wenn er etwas in den Formularen auf der Seite geändert hat, sehen Sie sich Folgendes an PageHasFormChanges . Beachten Sie, dass ich es für die Verwendung auf sehr einfachen Seiten mit nur einem oder zwei Formularen entwickelt habe.

PageHasFormChanges : Ein jQuery-Plugin, das überprüft, ob sich etwas in einem Formular auf einer Seite geändert hat, und den Benutzer warnt, bevor er die Seite verlässt.

Sie brauchen nichts weiter zu tun, als das Skript auf Ihrer Seite zu laden. Sie können jedoch die Standardeinstellungen ändern:

JoelPurra.PageHasFormChanges.setOptions({
    leavingPageWarningMessage: "Are you sure?"
});

Wenn Sie Ajax zur Übermittlung Ihrer Formulare verwenden, können Sie die Einstellung resetWarningOnPreventedSubmit a true .

1voto

Sujit Agarwal Punkte 12134

Können Sie die jquery unload Funktion:

$(window).unload(function() {
  alert('Handler for .unload() called.');
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X