Window: unload Event
Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.
Warnung: Entwickler sollten vermeiden, dieses Ereignis zu verwenden. Siehe "Hinweise zur Verwendung" unten.
Das unload
-Ereignis wird ausgelöst, wenn das Dokument oder eine Kindressource entladen wird.
Es wird nach folgenden Ereignissen ausgelöst:
beforeunload
(abbrechbares Ereignis)pagehide
Der Status des Dokuments ist folgender:
- Alle Ressourcen existieren noch (img, iframe usw.)
- Nichts ist für den Endbenutzer mehr sichtbar
- UI-Interaktionen sind unwirksam (
window.open
,alert
,confirm
, usw.) - Ein Fehler wird den Entladevorgang nicht stoppen
Bitte beachten Sie, dass das unload
-Ereignis auch dem Dokumentbaum folgt: Das Entladen des übergeordneten Frames erfolgt vor dem unload
des Kindsframes (siehe Beispiel unten).
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder legen Sie eine Ereignisbehandlereigenschaft fest.
addEventListener("unload", (event) => { })
onunload = (event) => { }
Ereignistyp
Ein generisches Event
.
Event-Handler-Aliase
Neben der Window
-Schnittstelle ist die Ereignisbehandlereigenschaft onunload
auch für folgende Ziele verfügbar:
Hinweise zur Verwendung
Entwickler sollten vermeiden, dieses Ereignis zu verwenden.
Insbesondere auf Mobilgeräten wird das unload
-Ereignis nicht zuverlässig ausgelöst. Zum Beispiel wird das unload
-Ereignis in folgendem Szenario überhaupt nicht ausgelöst:
- Ein mobiler Benutzer besucht Ihre Seite.
- Der Benutzer wechselt dann zu einer anderen App.
- Später schließt der Benutzer den Browser über den App-Manager.
Außerdem ist das unload
-Ereignis nicht mit dem Back/Forward Cache (bfcache) kompatibel, weil viele Seiten, die dieses Ereignis verwenden, davon ausgehen, dass die Seite nach dem Ereignis nicht weiter existiert. Um dem entgegenzuwirken, werden einige Browser (wie Firefox) Seiten nicht in den bfcache aufnehmen, wenn sie unload
-Listener haben, was schlecht für die Leistung ist. Andere, wie Chrome, werden das unload
nicht auslösen, wenn ein Benutzer die Seite verlässt.
Das beste Ereignis, um das Ende einer Benutzersitzung zu signalisieren, ist das visibilitychange
-Ereignis. In Browsern, die visibilitychange
nicht unterstützen, ist das nächstbeste Alternativereignis das pagehide
-Ereignis, das ebenfalls nicht zuverlässig ausgelöst wird, aber bfcache-kompatibel ist.
Wenn Sie speziell versuchen wollen, Seitenentladungsereignisse zu erkennen, ist es am besten, auf das pagehide
-Ereignis zu hören.
Siehe den Page Lifecycle API-Leitfaden für weitere Informationen zu den Problemen, die mit dem unload
-Ereignis verbunden sind.
Beispiele
<!doctype html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title>Parent Frame</title>
<script>
window.addEventListener("beforeunload", (event) => {
console.log("I am the 1st one.");
});
window.addEventListener("unload", (event) => {
console.log("I am the 3rd one.");
});
</script>
</head>
<body>
<iframe src="child-frame.html"></iframe>
</body>
</html>
Unten der Inhalt von child-frame.html
:
<!doctype html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title>Child Frame</title>
<script>
window.addEventListener("beforeunload", (event) => {
console.log("I am the 2nd one.");
});
window.addEventListener("unload", (event) => {
console.log("I am the 4th and last one…");
});
</script>
</head>
<body>
☻
</body>
</html>
Wenn der übergeordnete Frame entladen wird, werden Ereignisse in der Reihenfolge ausgelöst, die durch die console.log()
-Meldungen beschrieben wird.
Spezifikationen
Specification |
---|
HTML # event-unload |
HTML # handler-window-onunload |
Browser-Kompatibilität
Siehe auch
- Verwandte Ereignisse:
DOMContentLoaded
,readystatechange
,load
- Unloading Documents — unload a document
- Das
visibilitychange
-Ereignis. - Don't lose user and app state, use Page Visibility erklärt im Detail, warum Sie
visibilitychange
verwenden sollten, nichtbeforeunload
/unload
. - Page Lifecycle API bietet Leitfäden zu bewährten Verfahren zum Umgang mit dem Verhalten des Seitenlebenszyklus in Ihren Webanwendungen.
- PageLifecycle.js: eine JavaScript-Bibliothek, die sich mit browserübergreifenden Inkonsistenzen im Seitenlebenszyklus befasst.
- Back/forward cache erklärt, was der Back/Forward Cache ist, und seine Auswirkungen auf verschiedene Ereignisse im Seitenlebenszyklus.