Start · Sprachen · JavaScript · Referenz · PerformanceTiming.unloadEventStart

PerformanceTiming.unloadEventStart

Eigenschaft

Veraltete, schreibgeschützte Eigenschaft: Zeitpunkt (ms seit UNIX-Epoche), zu dem das <code>unload</code>-Ereignis des vorherigen Dokuments ausgelöst wurde, sonst <code>0</code>.

seit JavaScript Veraltet (Navigation Timing Level 1) – in allen Br deprecated seit ja Kategorie: webapi

Signatur

PerformanceTiming.unloadEventStart

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

Typ
number
Beschreibung
Ganzzahliger Zeitstempel (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());
}
unload gestartet: 2024-05-14T09:12:03.412Z

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`);
unload-Handler dauerten 3 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');
}
unloadEventStart: 12.4 ms unload-Dauer: 2.8 ms

// Wichtig · Fallstricke

  • Veraltet: performance.timing ist aus Navigation Timing Level 2 entfernt und nur noch aus Kompatibilitätsgründen vorhanden. Stattdessen PerformanceNavigationTiming verwenden.
  • 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 auf 0 prü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 besser pagehide bzw. visibilitychange nutzen.