javascript寫的異步加載js文件函數

自己用的加載js文件,支持多文件,不兼容ie

javascript寫的異步加載js文件函數

複製代碼 代碼如下:

/**

* 加載js文件

* @param {string || array} url js路徑

* @param {Function} fn 加載完成後回調

* @return {object} game對象

* @example

* getScript("",fn)

* getScript(["",""],fn)

*/

cript = (function() {

var cache = {};//內部緩存下url,下次則不請求

return function(url, fn) {

if ("string" === typeof(url)) {

url = [url]; //如果不是數組帶個套

};

var i = 0,//循環起

ok = 0,//加載成功幾個js

len = th,//一共幾個js

head = lementsByTagName("head")[0],

js, _url,

create = function(url) {//創建js

js = teElement("script");

= "text/javascript";

= url;

ndChild(js);

return js;

};

for (; i < len;) {

if (cache[encodeURIComponent((_url = url[i++]))]) {//如果加載過

(++ok >= len && fn) && fn();//如果加載完所有的則執行回調

continue;

}

cache[encodeURIComponent(_url)] = !0;//設置緩存

js = create(_url);//創建js

fn && (ad = function() {

if (++ok >= len) {//如果加載完所有的js則執行回調

fn();

}

});

};

head = js = _url = create = null;

return this;

}

})();