Signatur
Beschreibung
Die schreibgeschützte Eigenschaft unloadEventStart des Objekts performance.timing gibt einen Zeitstempel in Millisekunden seit der UNIX-Epoche zurück. Er gibt an, wann das unload-Ereignis des vorherigen Dokuments im selben Browsing-Kontext ausgelöst wurde. So lässt sich messen, wie viel Zeit das Aufräumen der alten Seite beim Seitenwechsel gekostet hat.
Gab es kein vorheriges Dokument (z. B. neuer Tab, direkte Eingabe der URL) oder stammt das vorherige Dokument bzw. eine der Weiterleitungen von einem anderen Ursprung (Same-Origin-Policy), ist der Wert 0. Zusammen mit unloadEventEnd ergibt sich die Dauer der unload-Handler der Vorgängerseite.
Die Schnittstelle PerformanceTiming ist veraltet. Für neuen Code sollte man PerformanceNavigationTiming.unloadEventStart verwenden (über performance.getEntriesByType("navigation")). Diese liefert hochauflösende DOMHighResTimeStamp-Werte relativ zu performance.timeOrigin statt Epoch-Millisekunden.
Rückgabewert
unsigned long long) in Millisekunden seit der UNIX-Epoche oder 0, wenn es kein gleichurspüngliches Vorgängerdokument gibt.Beispiele
Wert auslesen (veraltete API)
const { unloadEventStart } = performance.timing;
if (unloadEventStart === 0) {
console.log('Kein gleichurspüngliches Vorgängerdokument');
} else {
console.log('unload gestartet:', new Date(unloadEventStart).toISOString());
}
Dauer der unload-Handler der Vorgängerseite berechnen
const t = performance.timing;
const unloadDauer = t.unloadEventStart > 0
? t.unloadEventEnd - t.unloadEventStart
: null;
console.log(unloadDauer === null
? 'Keine Messung möglich'
: `unload-Handler dauerten ${unloadDauer} ms`);
Moderner Ersatz mit PerformanceNavigationTiming
const [nav] = performance.getEntriesByType('navigation');
if (nav) {
// Werte relativ zu performance.timeOrigin, hochauflösend
const dauer = nav.unloadEventEnd - nav.unloadEventStart;
console.log(`unloadEventStart: ${nav.unloadEventStart.toFixed(1)} ms`);
console.log(`unload-Dauer: ${dauer.toFixed(1)} ms`);
} else {
// Fallback für sehr alte Browser
const t = performance.timing;
console.log('Fallback:', t.unloadEventEnd - t.unloadEventStart, 'ms');
}
// Wichtig · Fallstricke
- Veraltet:
performance.timingist aus Navigation Timing Level 2 entfernt und nur noch aus Kompatibilitätsgründen vorhanden. StattdessenPerformanceNavigationTimingverwenden. - Häufig 0: Bei Navigation von einem fremden Ursprung, bei Weiterleitungen über fremde Ursprünge oder ohne Vorgängerseite ist der Wert
0. Differenzen daher immer vorher auf0prüfen, sonst entstehen riesige, unsinnige Werte. - Einheiten unterscheiden: Die alte API liefert Epoch-Millisekunden (ganzzahlig), die neue relative, hochauflösende Werte – beide nicht mischen.
- Das
unload-Ereignis selbst wird von Browsern zunehmend eingeschränkt (Back/Forward-Cache, Chrome-Deprecation). Messwerte können daher fehlen; für Aufräumlogik besserpagehidebzw.visibilitychangenutzen.