PerformanceNavigationTiming: domContentLoadedEventEnd property

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2021.

The domContentLoadedEventEnd read-only property returns a DOMHighResTimeStamp representing the time immediately after the current document's DOMContentLoaded event handler completes.

Typically frameworks and libraries wait for the DOMContentLoaded event before starting to run their code. We can use the domContentLoadedEventEnd and the domContentLoadedEventStart properties to calculate how long this takes to run.

Value

A DOMHighResTimeStamp representing the time immediately after the current document's DOMContentLoaded event handler completes.

Examples

Measuring DOMContentLoaded event handler time

The domContentLoadedEventEnd property can be used to measure how long it takes process the DOMContentLoaded event handler.

Example using a PerformanceObserver, which notifies of new navigation performance entries as they are recorded in the browser's performance timeline. Use the buffered option to access entries from before the observer creation.

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    const domContentLoadedTime =
      entry.domContentLoadedEventEnd - entry.domContentLoadedEventStart;
    console.log(
      `${entry.name}: DOMContentLoaded processing time: ${domContentLoadedTime}ms`,
    );
  });
});

observer.observe({ type: "navigation", buffered: true });

Example using Performance.getEntriesByType(), which only shows navigation performance entries present in the browser's performance timeline at the time you call this method:

js
const entries = performance.getEntriesByType("navigation");
entries.forEach((entry) => {
  const domContentLoadedTime =
    entry.domContentLoadedEventEnd - entry.domContentLoadedEventStart;
  console.log(
    `${entry.name}: DOMContentLoaded processing time: ${domContentLoadedTime}ms`,
  );
});

Specifications

Specification
Navigation Timing Level 2
# dom-performancenavigationtiming-domcontentloadedeventend

Browser compatibility

BCD tables only load in the browser

See also