异步动态加载script

首先是应用场景:因为项目需要,通过HTTP请求加载另一个项目的js文件并调用该js文件的方法;
实现思路:首先用document创建script并设置各个属性,使用Ajax获取该文件的地址并赋值,调用改js方法;
实现问题:必须要先去获取js文件才能调用改js的方法,由于是异步加载,所以无法保证是否在加载完之后调用该文件中的方法;
解决思路:创建script标签并在该创建函数里加入回调函数,在回调函数里判断该文件是否加载成功,成功则在回调函数里调用该文件中的方法
附上代码:

//动态插入script标签 
function createScript(url, callback){ 
    var oScript = document.createElement('script'); 
    oScript.type = 'text/javascript'; 
    //oScript.async = true; 
    oScript.src = url; 
    /* 
    ** script标签的onload和onreadystatechange事件 
    ** IE6/7/8支持onreadystatechange事件 
    ** IE9/10支持onreadystatechange和onload事件 
    ** Firefox/Chrome/Opera支持onload事件 
    */ 

    // 判断IE8及以下浏览器 
    var isIE = !-[1,]; 
    if(isIE){ 
        oScript.onreadystatechange = function(){ 
            if(this.readyState == 'loaded' || this.readyState == 'complete'){ 
                callback(); 
            } 
        } 
    } else { 
    // IE9及以上浏览器,Firefox,Chrome,Opera 
    oScript.onload = function(){ 
        callback(); 
        } 
    } 
    document.body.appendChild(oScript); 
} 

方法大家应该都能看懂,根据浏览器不同调用不同的插入方法;
调用该方法:

createScript(data.ssoJsUrl, function(){ 

                });

完毕;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值