Signatur
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
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());
}
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`);
}
});
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`);
// Wichtig · Fallstricke
- Veraltet:
performance.timingist deprecated. Browser unterstützen es aus Kompatibilitätsgründen weiterhin, du solltest es aber durchPerformanceNavigationTimingersetzen. - 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
unloadselbst gilt als problematisch: Es ist unzuverlässig und verhindert den bfcache. Nutze besserpagehideodervisibilitychange.