javascript 异步加载

Posted homehtml

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 异步加载相关的知识,希望对你有一定的参考价值。

javascript 异步加载

背景:公司使用新的统计埋点,由于弹层出现地方较多,新埋点方法未能及时压入common.js 所以需要自己引入阿里云上的埋点文件

技术图片

问题1:在代码里输入

<script src="xxxx/xx.js"></script>`

后台直出到页面上==script==并未去请求js,导致代码报错

问题2:动态==异步==添加到dom中

由于是 异步的 导致 js 还没加载完 下面的埋点调用就开始执行了 js报onloginit undefind

解决方法

;
(function() {
    /**
     * 动态加载js文件
     * @param  {string}   url      js文件的url地址
     * @param  {Function} callback 加载完成后的回调函数
     */
    var _getScript = function(url, callback) {
        var head = document.getElementsByTagName(‘head‘)[0],
            js = document.createElement(‘script‘);

        js.setAttribute(‘type‘, ‘text/javascript‘); 
        js.setAttribute(‘src‘, url); 

        head.appendChild(js);

        //执行回调
        var callbackFn = function(){
                if(typeof callback === ‘function‘){
                    callback();
                }
            };

        if (document.all) { //IE
            js.onreadystatechange = function() {
                if (js.readyState == ‘loaded‘ || js.readyState == ‘complete‘) {
                    callbackFn();
                }
            }
        } else {
            js.onload = function() {
                callbackFn();
            }
        }
    }

    //如果使用的是zepto,就添加扩展函数
    if(Zepto){
        $.getScript = _getScript;
    }
    
})();

在js加载完触发回调 里执行


js.onload = function callback() {}

以上是关于javascript 异步加载的主要内容,如果未能解决你的问题,请参考以下文章

javascript 异步片段

当活动中的异步任务完成时如何在片段中重新加载ui?

javascript脚本如何异步加载,有啥作用

异步任务片段背景数据

JavaScript异步加载

javascript 异步加载