JS的异步装载

2017-05-13  本文已影响27人  zhangivon

JS的装载和执行

首先,浏览器对JS的运行分两个特性:
1)载入后马上执行;
2)执行后会阻塞后面的内容(包括页面的渲染、其他资源的下载等)
所以,有多个js文件要载入的时候,浏览器默认是同步下载,即按顺序一个一个下载下来,并依次执行。
当此时,要操作DOM结点的时候,由于HTML被阻塞,DOM树还没生成,故此时如果引用document.getElementById这些操作时,会报找不到的错误。举例:

test.js test.html 结果 F12查看

认识DOMContentLoaded和load

先触发DOMContentLoaded事件,后触发load事件。
DOM文档加载的步骤为:

解析HTML结构。
加载外部脚本和样式表文件。
解析并执行脚本代码。
DOM树构建完成。//DOMContentLoaded
加载图片等外部文件。
页面加载完毕。//load
在第4步,会触发DOMContentLoaded事件。在第6步,触发load事件。

defer和async

举例:

此外,还可以通过创建script,插入到DOM中,加载完毕后callBack来异步加载。

网上这篇帖子写的不错,可以参考一下:http://www.360doc.com/content/13/0620/12/1332348_294249608.shtml

上一篇 下一篇

猜你喜欢

热点阅读