31 Stimmen

JavaScript + onbeforeunload

Ich habe eine Frage zu meiner Bewerbung. Wann immer Benutzer schließt Browser-Fenster versehentlich möchte ich einige Aufräumarbeiten vor, dass zu tun. Ich habe onunload-Ereignis verwendet, aber das Problem ist, dieses Ereignis ist manchmal feuert und manchmal nicht. Was sollte ich tun, gibt es einen besseren Weg, um diese Art von Problem zu behandeln.

0 Stimmen

NB: Es scheint sich um eine eng verwandte Frage desselben Benutzers zu handeln: stackoverflow.com/questions/1254869/javascript-onunload-event

0 Stimmen

1 Stimmen

Keine der Antworten in diesem Thema funktioniert mit den neuen Browsern Politik. Chrome und Firefox vollständig deaktivieren die onbeforeunload Fähigkeit zu verhindern, dass das Formular zu schließen. und Sie können nicht einmal die Standardnachricht ändern. in IE und Rand können Sie nur die Standardnachricht ändern, aber nicht verhindern, Seite neu laden.

37voto

rahul Punkte 179143
window.onbeforeunload = function() {
    return 'You have unsaved changes!';
}

Siehe die MSDN-Artikel über onbeforeunload

Außerdem gibt es eine ähnliche Frage in SO

7voto

Davide Ungari Punkte 1820

Versuchen Sie es:

window.onbeforeunload = function() { ...your code... }

4voto

Prasanna Raghu Punkte 2483

Nach meiner Erfahrung funktioniert onunload in verschiedenen Browsern unterschiedlich. Warum verwenden Sie nicht stattdessen einen anderen Event-Handler namens onbeforeunload. Das sollte funktionieren. Onbeforeunload wird zuerst ausgeführt, bevor das Fenster geschlossen wird, also sollte das Ihr Problem lösen.

4voto

Cody Punkte 9242

Das funktioniert:

window.onbeforeunload = function(){
    console.log('closing shared worker port...');
    return 'Take care now, bye-bye then.';
  };

Das ist praktisch, wenn Sie zum Beispiel mit SharedWorkers arbeiten und dem Worker mitteilen müssen, dass es einen Port weniger zu verwalten gibt -- andernfalls könnte es passieren, dass Sie eine Browser-Registerkarte aktualisieren und so etwas wie "Erfolgreich verbunden mit" erhalten: 10 andere Tabs", weil der eine Tab den Worker am Leben hält, während die Aktualisierungen der anderen Tabs neue Port-Verbindungen an das Array weiterleiten.

Ich hoffe, das hilft.

2voto

kaiserkiwi Punkte 487

Dies ist aus Sicherheitsgründen nicht erlaubt. onbeforeunload ist eine Browser-API, die sich in verschiedenen Browsern unterschiedlich verhält.

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