js延迟加载

  1. defer 属性

    <script src="a.js" defer></script>
    

浏览器会并行下载 a.js和其它有defer属性的script,而不会阻塞页面后续处理。defer属性在IE 4.0中就实现了,超过10多年了!Firefox从 3.5 开始支持defer属性 。
注:所有的defer脚本保证是按顺序依次执行的。

  1. async 属性

    <script src="a.js" async></script> 
    

async属性是HTML5新增的。作用和defer类似,但是它将在下载后尽快执行,不能保证脚本会按顺序执行。它们将在onload 事件之前完成。
Firefox3.6、Opera10.5、IE9和最新的Chrome 和 Safari 都支持 async属性。可以同时使用 async和defer,这样IE4之后的所有IE都支持异步加载。

  1. 动态创建DOM方式
    <script type="text/javascript">
    function downloadJSAtOnload() {
    var element = document.createElement("script");
    element.src = "a.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>
  2. 用jQuery的getScript()方法
    $.getScript("outer.js",function(){//回调函数,成功获取文件后执行的函数
    console.log("脚本加载完成")
    });
  3. 图片懒加载
    function aftLoadImg(obj,url){
    var oImg = new Image();//缓冲
    oImg.onload = function(){
    obj.src = oImg.src;//图片加载完成后赋值给真正的图片元素
    }
    oImg.src = url;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容