虽然页面结构一样,但不一样的是
打开defer.html依次看到是: 弹出"script"的alert框=>页面渲染出文字=>弹出"defer"的alert框=>弹出"load"的alert框
打开async.html依次看到是: 弹出"script"的alert框=>弹出"async"的alert框=>页面渲染出文字=>弹出"load"的alert框
3.2.使用动态创建的script标签来下载执行JavaScript代码
file.js在script元素添加到页面时就启动下载,使用这种方式的优势在于file.js的下载和执行不会阻塞页面其他进程。
从demo上可以明显的看出动态加载方式可以在alert框弹出之前先看到页面上的文字,但是普通的方式只有在alert框弹出之后才可以看到页面上的文字。
我们可以封装一个跨浏览器的读取script脚本并动态创建script标签的函数:
这类动态加载脚本的方法兼容性好,也比较简单,是一种常用的无阻塞解决方案。
3.3.使用XHR对象下载JavaScript代码并注入页面
另一种无阻塞加载脚本的方式是使用XMLHttpRequest(XHR)对象获取脚本并注入页面中。
这种技术会先创建一个XHR对象,然后用他下载JavaScript文件,最后通过常见动态