JS异步加载

<script type="text/javascript" src="demo.js" defer = "defer"></script>
    <!-- IE方法 可以将JS代码写在标签内部,等到DOM树生成完之(页面解析完毕)时,才会执行 -->
<script type="text/javascript" src="demo.js" async="async"></script>
    <!-- W3C标准 加载完后就立即执行 js代码不能写在里面,加载外部脚本 -->

常用方法是,当需要加载某JS文件时,创建一个script标签,将JS文件的路径传入,同时还可以传入需要调用的某个函数,之后将创建的js标签添加到DOM中,JS文件才会执行。
封装一个异步加载函数,兼容浏览器

// 异步加载
function loadScript(url,callback){
    var script = document.createElement('script');
    script.type = "text/javascript";
    if(script.readyState) {//IE
        script.onreadystatechange = function(){
            if(script.readyState == 'complete' || script.readyState == 'loaded'){
                 callback();//可以传入字符串  使用eval()解析
            }
        }
    }else {
        script.onload = function(){
            callback();
        }
    }
    script.src = url;//直接传入函数的方式写在后面,因为当距离较近时 ie的状态不一定能够检测到
    document.head.appendChild(script);//将script标签添加到document才能执行
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值