如果你的网站上面有很多第三方JS代码,那么“下载速度的不可控”很有可能导致你的网站会被拖慢。因为JS在执行的时候会影响到页面的DOM和样式等情况。浏览器在解析渲染HTML的时候,如果解析到需要下载文件的script标签,那么会停止解析接下来的HTML,然后下载外链JS文件并执行。等JS执行完毕之后才会继续解析剩下的HTML。这就是所谓的『HTML解析被阻止』。浏览器解析渲染页面的抽象流程图如下:
(1)异步加载
(1)异步加载
异步加载JS的方法很多,最常见的就是动态创建一个script标签,然后设置其src和async属性,再插入到页面中。这里有个DEMO。实际操作的代码如下:
<script>
function loadScript(url) {
var scrs = document.getElementsByTagName('script');
var last = scrs[scrs.length - 1];
var scr = document.createElement('script');
scr.src = url;
scr.async = true;
la