W3C указывает список событий и их соответствующие тайминги, которые должны возвращать пользовательские агенты, если они хотят поддерживать API синхронизации навигации.
Список вы можете посмотреть здесь: http://www.w3.org/TR/navigation-timing/#process
Понимание того, какой процесс связан с тем, какие события в большинстве случаев довольно прямолинейны. Но одна вещь, которая ускользает от меня, это то, что происходит между domContentLoadedEventStart
и domContentLoadedEventEnd
.
Вот что я понял до сих пор и основываю свои размышления на:
-
domLoading
//UA начинает разбор документа. -
domInteractive
//UA завершил разбор документа. пользователей может взаимодействовать со страницей. -
domContentLoaded
//Документ полностью загружен и разобранные и отложенные сценарии, если они есть, выполнены. (Асинхронные скрипты, если таковые имеются, могли или не могли быть выполнены???) -
domComplete
//Дерево DOM полностью построено. Асинхронные скрипты, если любые, выполнены. -
loadEventEnd
//У UA есть полностью заполненная страница. Все ресурсы, например изображения, swf и т.д.
Вы должны иметь возможность определить, что происходит после фазы №3 (domContentLoaded
), понимая, что вызвало событие №4 (domComplete
), но не инициировало предыдущие события.
Итак, можно было бы подумать, что "сценарии Async, если они были выполнены" означает, что асинхронные скрипты выполняются после фазы №3, но до события №4. Но, согласно моим тестам, это не то, что происходит, если только мой тест не прав. (Я пытался реплицировать свой тест на JSFiddle
, но я не могу сделать работу с отложенным/асинхронным script, так как не существует способа добавить атрибут во внешние скрипты.)
Итак, мой вопрос: какой процесс происходит между domContentLoadedEventStart
и domContentLoadedEventEnd
?