Start · Sprachen · JavaScript · Referenz · PerformanceTiming.unloadEventEnd

PerformanceTiming.unloadEventEnd

Eigenschaft

Schreibgeschützter Zeitstempel in Millisekunden seit der UNIX-Epoche, zu dem der <code>unload</code>-Eventhandler des vorherigen Dokuments beendet wurde.

seit JavaScript Veraltet (Navigation Timing Level 1); Baseline: al deprecated seit ja Kategorie: webapi

Signatur

PerformanceTiming.unloadEventEnd

Beschreibung

Die schreibgeschützte Eigenschaft unloadEventEnd des Interfaces PerformanceTiming liefert einen Wert vom Typ unsigned long long. Er gibt den Zeitpunkt in Millisekunden seit der UNIX-Epoche an, zu dem der unload-Eventhandler des vorherigen Dokuments im selben Browsing-Kontext fertig ausgeführt wurde. Du erreichst sie über performance.timing.unloadEventEnd.

Zusammen mit unloadEventStart kannst du messen, wie lange das Entladen der vorherigen Seite gedauert hat. Das ist nützlich, wenn aufwendige unload-Handler (z. B. synchrones Senden von Analysedaten) die Navigation zur nächsten Seite ausbremsen.

Der Wert ist 0, wenn es kein vorheriges Dokument gibt (z. B. bei einem neuen Tab oder direkter Eingabe der URL) oder wenn das vorherige Dokument bzw. eine Weiterleitung dazwischen von einem anderen Ursprung stammt.

Die gesamte PerformanceTiming-Schnittstelle ist veraltet. Für neuen Code solltest du stattdessen PerformanceNavigationTiming.unloadEventEnd aus Navigation Timing Level 2 nutzen. Dessen Werte sind hochauflösende DOMHighResTimeStamp-Werte relativ zu performance.timeOrigin.

Rückgabewert

Typ
number
Beschreibung
Ganzzahliger Zeitstempel (unsigned long long) in Millisekunden seit der UNIX-Epoche. Er ist 0, wenn es kein vorheriges Dokument vom selben Ursprung gibt.

Beispiele

Zeitstempel auslesen

const { unloadEventEnd } = performance.timing;

if (unloadEventEnd === 0) {
  console.log('Kein vorheriges Dokument vom selben Ursprung');
} else {
  console.log('unload beendet um:', new Date(unloadEventEnd).toISOString());
}
unload beendet um: 2024-05-14T09:12:03.418Z

Dauer des unload-Handlers der Vorgängerseite messen

window.addEventListener('load', () => {
  const t = performance.timing;
  if (t.unloadEventStart > 0) {
    const dauer = t.unloadEventEnd - t.unloadEventStart;
    console.log(`unload-Handler der vorherigen Seite: ${dauer} ms`);
  }
});
unload-Handler der vorherigen Seite: 3 ms

Moderne Alternative mit Fallback

const getUnloadDuration = () => {
  const [nav] = performance.getEntriesByType('navigation');
  if (nav) {
    // Navigation Timing Level 2: relativ zu timeOrigin, hochauflösend
    return nav.unloadEventEnd - nav.unloadEventStart;
  }
  // Veralteter Fallback
  const t = performance.timing;
  return t.unloadEventEnd - t.unloadEventStart;
};

console.log(`Unload-Dauer: ${getUnloadDuration().toFixed(1)} ms`);
Unload-Dauer: 2.7 ms

// Wichtig · Fallstricke

  • Veraltet: performance.timing ist deprecated. Browser unterstützen es aus Kompatibilitätsgründen weiterhin, du solltest es aber durch PerformanceNavigationTiming ersetzen.
  • Wert 0: Bei fehlendem Vorgängerdokument oder Weiterleitungen über andere Ursprünge ist der Wert 0. Prüfe das vor Berechnungen, sonst erhältst du unsinnige Differenzen.
  • Unterschiedliche Zeitbasis: Die alte API liefert absolute Epochen-Millisekunden als Ganzzahlen. Die neue API liefert relative Werte mit Nachkommastellen. Mische beide Zeitbasen nicht in einer Berechnung.
  • bfcache: Wird die Seite aus dem Back/Forward-Cache wiederhergestellt, entsteht kein neuer Navigationseintrag. Die Werte stammen dann von der ursprünglichen Navigation.
  • Das Ereignis unload selbst gilt als problematisch: Es ist unzuverlässig und verhindert den bfcache. Nutze besser pagehide oder visibilitychange.