JS延迟加载的几种方法:

利用定时器

利用定时器,延迟一定的时间后再引入js文件,给html的加载和渲染留出时间
    setTimeout(function(){
       document.getElementById(‘my').src='demo.js';
    } “,3000);//延时3秒后执行

defer 属性

加上 defer 等于在页面完全载入后再执行
    <scriptsrc="demo.js" defer></script>

async 属性

js文档一旦下载完毕就会立刻执行,所以可能是不按照页面引入的顺序执行。
    <scriptsrc="file.js" async></script>

动态创建DOM方式

监听load事件,当load事件触发的时候就动态加载js文件
   <script type="text/javascript">  
       function downloadJSAtOnload() {  
           varelement = document.createElement("script");  
          element.src = "defer.js";  
          document.body.appendChild(element);  
       }  
       if (window.addEventListener)  
          window.addEventListener("load",downloadJSAtOnload, false);  
       else if (window.attachEvent)  
          window.attachEvent("onload",downloadJSAtOnload);  
       else window.onload =downloadJSAtOnload;  
</script>

使用jQuery的getScript()方法

通过回调函数来延迟加载js文件,回调函数时获取到demo.js后执行的代码
    $.getScript("demo.js",function(){
      console.log("脚本加载完成")  
    });

在html底部加载js文件

html是从上到下执行的,所以在</body>的前面引入js文件,js文件获取到执行的时候,DOM树已经构建完成了。