Чем больше я использую JavaScript, тем больше я пытаюсь найти эффективные способы загрузки и выполнения моих скриптов. Один из методов, который я нашел действительно полезным, - это загрузка javascript без блокировки.
function include_js(url) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
include_js('script.js');
В JavaScript также есть оконный метод, который выполняется после загрузки страницы.
window.onload = function() {
alert('Script executed onload');
};
Я хочу знать, как браузер обрабатывает скрипт, выполняемый методом window.onload, блокирующий или неблокирующий скрипт?
Я хочу знать, как сценарий обработки браузера, выполняемый метод window.onload, блокирует ли он или неблокирующий скрипт?
Вы имеете в виду, как выполняется код в обработчике событий? Он работает асинхронно, но, поскольку JavaScript имеет только один поток, он блокируется и будет блокироваться до тех пор, пока поток не станет доступным.
См. эту статью о том, как работают таймеры, чтобы лучше понять, как ведут себя асинхронные методы в среде с одним потоком.
Единственный способ получить код JavaScript, который выполняется параллельно с другим кодом JavaScript, — это использовать веб воркеры, которые фактически используют отдельный поток.
Это не блокирующий. Вы просто назначаете переменную функции, и выполнение другого скрипта продолжается. После загрузки DOM вызывается назначенный обратный вызов.