js异步加载的三种方式

异步加载又叫非阻塞,浏览器在加载执行 js 同时,还会继续进行后续页面的处理。
异步加载js,按需加载,用到的时候再加载,不用到不加载。

异步加载的三种方式:
1.defer属性:在文档完成解析完成开始执行,并且在DOMContentLoaded事件之前执行完成。仅支持IE,最好是外部的script使用。
2.async属性:加载完就执行,只能加载外部脚本,是W3C的标准。高版本的浏览器支持加载内部脚本,但是标准中不允许。
3.创建一个script标签,插入到DOM中。兼容性最好。
异步加载禁止使用document.write(),因为document.write()有可能会清空文档流

异步加载的兼容性写法:

function loadScript(url, callback){
    var script = document.createElement('script');
    script.type = "text/javascript";
   
    if(script.readyState){
        // 状态码 readyState-->complete loaded 表示ie中script加载完成了
        script.onreadystatechange = function (){// ie
            if(script.readyState == 'complete' || script.readyState == 'loaded'){
              obj[callback]();
            }
        }
    }else{
         // 什么时候load.js加载完成了?  提示  onload
        script.onload = function(){//加载完成的标志
            // safari  chrome firefox opera
            obj[callback]();
        }
    }

    script.src = url;//下载了指定地址的js文件
    document.head.appendChild(script);//挂到DOM树上,此时才执行了js文件中的代码
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值