我越是使用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方法执行的脚本,是阻塞还是非阻塞脚本?
答案 0 :(得分:1)
它是无阻塞的。您只是将一个变量赋值给一个函数,并继续执行其他脚本。加载DOM后,将调用指定的回调。
答案 1 :(得分:1)
我想知道的是,怎么做 浏览器处理脚本执行的 window.onload方法,它是阻塞的 或非阻塞脚本?
您是指如何执行事件处理程序中的代码?它以异步方式运行,但由于JavaScript只有一个线程,因此它是块,并且在线程可用之前将被阻塞。
请参阅this article about how timers work以更好地了解异步方法在单线程环境中的行为。
让JavaScript代码与其他JavaScript代码并行执行的唯一方法是使用web workers,它实际上使用单独的线程。