Почему window.performance.timing.domContentLoadedEventStart возвращает 0

Ниже мой код функции js.

console.log(window.performance.timing);
console.log(window.performance.timing.domContentLoadedEventStart);

Когда я запускаю приведенный выше код, запустив мой js file, window.performance.timing возвращает object в котором domContentLoadedEventStart имеет какое-то значение. Но когда я попытался напечатать window.performance.timing.domContentLoadedEventStart он возвращает 0.

Не уверен, что происходит. Может кто-нибудь объяснить мне.

1 ответ

Решение

window.performance.timing

Это свойство имеет PerformanceTiming объект, описывающий вашу страницу.

PerformanceTiming.domContentLoadedEventStart

PerformanceTiming.domContentLoadedEventStart свойство имеет значение, представляющее момент непосредственно перед тем, как синтаксический анализатор отправил DOMContentLoaded событие, в миллисекундах с эпохи UNIX.

DOMContentLoaded событие

DOMContentLoaded событие вызывается, когда исходный HTML-документ полностью загружен и проанализирован, не дожидаясь окончания загрузки таблиц стилей, изображений и подкадров.

Причина по которой window.performance.timing.domContentLoadedEventStart дал вам 0

Ваш сценарий был выполнен до DOMContentLoaded Произошло событие, поэтому в момент, когда парсер отправил DOMContentLoaded событие, было неизвестно в то время.

https://html.spec.whatwg.org/multipage/scripting.html

Чтобы предотвратить это

Предотвращать PerformanceTiming.domContentLoadedEventStart из того 0, вы должны отослать его после DOMContentLoaded событие происходит. Попробуй это:

document.addEventListener("DOMContentLoaded", event => {
    console.info("DOM fully loaded and parsed.");
    console.info(window.performance.timing.domContentLoadedEventStart);
});

или же

<script defer src="...">

,

Другие вопросы по тегам