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.
Antworten
Zu viele Anzeigen?window.onbeforeunload = function() {
return 'You have unsaved changes!';
}
Siehe die MSDN-Artikel über onbeforeunload
Außerdem gibt es eine ähnliche Frage in SO
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.
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.
- See previous answers
- Weitere Antworten anzeigen
0 Stimmen
NB: Es scheint sich um eine eng verwandte Frage desselben Benutzers zu handeln: stackoverflow.com/questions/1254869/javascript-onunload-event
0 Stimmen
Auch stackoverflow.com/questions/1244535/ , usw.
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.