Signatur
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
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`);
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);
});
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`);
}
// Wichtig · Fallstricke
- Veraltet:
PerformanceTimingist in der Spezifikation als deprecated markiert. Für neuen Code sollte manPerformanceNavigationTimingüberperformance.getEntriesByType('navigation')verwenden. Der WertdomLoadingist 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 zunavigationStart. 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 wiedomCompletenoch0sein. 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.