动态加载Javascript增强版本

我们经常使用动态加载Javascript,写个函数很容易现实,之前也写过一个函数,不过当加载多个JS时,只能根据浏览器返回的顺序来先后加载,这肯定不是我们想要的,现在使用了一下技巧,当加载多个JS时,能按照我们的顺序加载:

/*
    Name:动态加载JS
    Author:kingwell Leng
    Date : 2013/4/21
    E-mail: jinhua.leng##gmail.com

*/
function getScript(obj, callback) {
    var arr = obj,
    timeout,
    str = typeof obj === 'string';
    function add() {
        var script = document.createElement("script");
            header = document.getElementsByTagName("head")[0];
        script.src = str ? obj : arr[0];
        script.type = "text/javascript";
        if (str) {
            if (script.readyState) {
                script.onreadystatechange = function () {
                    if (script.readyState === 'loaded' || script.readyState === 'complete') {
                        script.onreadystatechange = null;
                        callback && callback();
                    }
                };
            } else {
                script.onload = function () {
                    callback && callback();
                };
            }
        } else {
            if (arr.length >= 1) {
                if (script.readyState) {
                    script.onreadystatechange = function () {
                        if (script.readyState === 'loaded' || script.readyState === 'complete') {
                            script.onreadystatechange = null;
                            arr.shift();
                            timeout = setTimeout(add, 1);
                        }
                    };
                } else {
                    script.onload = function () {
                        arr.shift();
                        timeout = setTimeout(add, 1);
                    };
                }
            } else {
                clearTimeout(timeout);
                callback && callback();
            }
        }
        header.appendChild(script);
    }
    add();
}

调用:

getScript(['http://code.jquery.com/jquery-1.9.1.min.js','js1.js', 'js2.js', 'js3.js', 'js4.js'], function () {
	alert('我是按顺序加载啦');
});

 现在是按照我们写代码的顺序加载啦...

原文地址:https://www.cnblogs.com/kingwell/p/3033551.html