Трудно сделать хорошую синхронизацию, потому что performance.dominteractive является miscalulated (так или иначе интересная ссылка для синхронизации разработчиков).
, Когда dom анализируется, он все еще может загрузить и выполнить задержанные сценарии. И встроенные сценарии, ожидающие CSS (CSS, блокирующаяся dom), должны быть загружены также до DOMContentloaded. Таким образом, это еще не анализируется?
И мы имеем событие readystatechange , где мы можем посмотреть readyState, который, к сожалению, отсутствует "dom, анализируется", который происходит где-нибудь между "загруженным" и "интерактивным".
Все становится проблематичным, когда даже не Синхронизация API дает нам время, когда dom прекратил анализировать HTML и запускаться Конец процесс. В этом стандарте говорится, что первая точка должна быть то, что "интерактивные" огни точно после dom проанализировали ! И Chrome и FF реализовали его, когда документ закончился загрузка когда-то после того, как он проанализировал. Они кажутся (mis), интерпретируют standars, в то время как парсинг продолжается вне задержанных сценариев, выполняемых, в то время как люди неправильно истолковывают DOMContentLoaded, поскольку что-то происходит, прежде задержано выполнение и не после. Так или иначе...
Моя рекомендация для Вас состоит в том, чтобы считать about​ API Синхронизации Навигации. Или пойдите простым путем и выберите остроту их, или выполните все три и посмотрите в Вашей консоли браузеров...
document.addEventListener('readystatechange', function() { console.log("Fiered '" + document.readyState + "' after " + performance.now() + " ms"); });
document.addEventListener('DOMContentLoaded', function() { console.log("Fiered DOMContentLoaded after " + performance.now() + " ms"); }, false);
window.addEventListener('load', function() { console.log("Fiered load after " + performance.now() + " ms"); }, false);
время находится в миллисекундах после запущенного документа. Я проверил с [1 110] Navigation​ Синхронизация API.
Для получения секунд для exampe со времени Вы сделали var ti = performance.now()
, можно сделать parseInt(performance.now() - ti) / 1000
Вместо такого performance.now () вычитания, код становится немного короче [1 111] Пользователь, Синхронизирующий API, где Вы устанавливаете метки в Вашем коде и мера между метками.