Причина, по которой вы видите loadEventEnd: 0
(а также loadEventStart: 0
в этом отношении), заключается в том, что вы проверяете значение в $(document).ready()
.
$(document).ready()
- это , запускаемое jQuery , когда DOM полностью загружен. Это будет до запуска события onLoad
окна, которое произойдет только после загрузки всего внешнего контента (например, CSS и изображений).
Для лучшей визуализации браузера Временная шкала NavigationTiming , см. Изображение ниже:
$(document).ready()
запускается по существу после domContentLoaded
, до domComplete
и явно до loadEventStart
и loadEventEnd
(например, сработало событие onLoad
окна).
Обратите внимание, что вы не должны просто изменять свой код для запуска во время события окна onLoad
, так как loadEventEnd
все равно будет 0 во время события onLoad
. Определение loadEventEnd
в спецификации NavigationTiming :
Этот атрибут должен возвращать время завершения события загрузки текущего документа. Он должен возвращать ноль , когда событие загрузки не запущено или не завершено .
Решение состоит в том, чтобы игнорировать loadEventEnd
(и использовать loadEventStart
или событие window.performance.now()
) во время события onLoad
, или setTimeout(..., 0)
во время события onLoad
и запрашивать данные о производительности во время этого обратного вызова , как это будет после onLoad
, поэтому все отметки времени должны быть заполнены. Это действительно зависит от того, какие отметки времени имеют для вас значение.