« 回到主页

JavaScript 异步加载

1 JavaScript异步加载的三种方式

2 script标签的位置

传统的做法是:所有script元素都放在head元素中,必须等到全部js代码都被下载、解析、执行完毕后,才能开始呈现网页的内容(浏览器在遇到<body>标签时才开始呈现内容),这在需要很多js代码的页面来说,会造成浏览器在呈现页面时出现明显的延迟,而延迟期间的浏览器窗口将是一片空白。因此。一般把script标签放在</body>标签前面。

3 嵌入脚本与外部脚本

尽可能使用外部脚本,理由如下:

4 async和defer

4.1 defer=”defer”和async=”true/false”

html4.0中定义了defer;HTML5.0中定义了async。

4.2 defer和async的共同点

4.3 defer和async的不同点

5 动态创建script

在没有定义defer和async之前,异步加载的方式是动态创建script,通过window.onload方法确保页面加载完毕再将script标签插入到DOM中。

function addScriptTag(src) {
    var script = document.createElement('script');
    script.setAttribute("type","text/javascript");
    script.src = src;
    document.body.appendChild(script);
}
window.onload = function() {
    addScriptTag("js/index.js");
}

« 回到主页