Start · Sprachen · JavaScript · Referenz · PerformanceTiming.domLoading

PerformanceTiming.domLoading

Eigenschaft

Veralteter, schreibgeschützter Zeitstempel (ms seit UNIX-Epoche), zu dem der Parser mit dem Aufbau des Dokuments begann und <code>document.readyState</code> zu <code>"loading"</code> wechselte.

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

Signatur

PerformanceTiming.domLoading

Beschreibung

Die schreibgeschützte Eigenschaft PerformanceTiming.domLoading liefert einen Zeitstempel in Millisekunden seit der UNIX-Epoche. Er markiert den Moment, in dem der HTML-Parser mit der Arbeit begann. Zu diesem Zeitpunkt wechselt document.readyState auf "loading" und das zugehörige readystatechange-Ereignis wird ausgelöst.

Früher nutzte man den Wert, um die Dauer der DOM-Verarbeitung zu berechnen, etwa als Differenz zu domInteractive oder domComplete. Der Zugriff erfolgt über performance.timing.domLoading.

Die Eigenschaft gehört zur veralteten Schnittstelle PerformanceTiming (Navigation Timing Level 1). In Navigation Timing Level 2 gibt es kein direktes Gegenstück: PerformanceNavigationTiming enthält kein domLoading. Als Ersatz dienen meist responseEnd oder domInteractive. Diese Werte sind hochauflösende Zeitstempel relativ zu performance.timeOrigin.

Rückgabewert

Typ
number
Beschreibung
Ein unsigned long long als ganze Zahl: Millisekunden seit der UNIX-Epoche, zu denen der Parser startete. Wurde der Zeitpunkt noch nicht erreicht, ist der Wert 0.

Beispiele

Zeitstempel auslesen

const { domLoading, navigationStart } = performance.timing;
console.log(`Parser-Start nach ${domLoading - navigationStart} ms`);
Parser-Start nach 142 ms

Dauer der DOM-Verarbeitung nach dem load-Ereignis messen

window.addEventListener('load', () => {
  // loadEventEnd ist erst nach Ende des Handlers gesetzt, daher kurz warten
  setTimeout(() => {
    const t = performance.timing;
    const bisInteraktiv = t.domInteractive - t.domLoading;
    const bisKomplett = t.domComplete - t.domLoading;
    console.log({ bisInteraktiv, bisKomplett });
  }, 0);
});
{ bisInteraktiv: 210, bisKomplett: 780 }

Moderner Ersatz mit PerformanceNavigationTiming (mit Rückfall auf die alte API)

const [nav] = performance.getEntriesByType('navigation');

if (nav) {
  // Näherung: Parser beginnt etwa mit Ende der Antwort
  const parseDauer = nav.domInteractive - nav.responseEnd;
  console.log(`Parsen bis interaktiv: ${parseDauer.toFixed(1)} ms`);
} else if (performance.timing) {
  const t = performance.timing;
  console.log(`Parsen bis interaktiv: ${t.domInteractive - t.domLoading} ms`);
}
Parsen bis interaktiv: 198.4 ms

// Wichtig · Fallstricke

  • Veraltet: PerformanceTiming ist in der Spezifikation als deprecated markiert. Für neuen Code sollte man PerformanceNavigationTiming über performance.getEntriesByType('navigation') verwenden. Der Wert domLoading ist dort nicht mehr vorhanden.
  • Absolute Zeit: Der Wert ist ein Epochen-Zeitstempel, kein relativer Wert wie bei performance.now(). Sinnvoll ist er nur als Differenz, zum Beispiel zu navigationStart. Er ist außerdem nur auf ganze Millisekunden genau.
  • Wert 0: Wird der Wert zu früh ausgelesen, etwa in einem Skript ganz am Anfang von <head>, können abhängige Felder wie domComplete noch 0 sein. Negative Differenzen deuten darauf hin.
  • Browser: Die Eigenschaft wird aus Kompatibilitätsgründen weiterhin von Chrome, Firefox, Safari und Edge unterstützt. In Web Workern ist sie nicht verfügbar.
  • Aus Datenschutzgründen können Browser die Genauigkeit von Zeitstempeln reduzieren.