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:

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.

js
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:

  1. Ein mobiler Benutzer besucht Ihre Seite.
  2. Der Benutzer wechselt dann zu einer anderen App.
  3. 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

html
<!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:

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