欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

javascript写的异步加载js文件函数(支持数组传参)_javascript技巧

程序员文章站 2022-05-10 20:20:20
...
自己用的加载js文件,支持多文件,不兼容ie

复制代码 代码如下:

/**
* 加载js文件
* @param {string || array} url js路径
* @param {Function} fn 加载完成后回调
* @return {object} game对象
* @example
* getScript("url.js",fn)
* getScript(["url-1.js","url-2.js"],fn)
*/
game.getScript = (function() {
var cache = {};//内部缓存下url,下次则不请求
return function(url, fn) {
if ("string" === typeof(url)) {
url = [url]; //如果不是数组带个套
};
var i = 0,//循环起
ok = 0,//加载成功几个js
len = url.length,//一共几个js
head = document.getElementsByTagName("head")[0],
js, _url,
create = function(url) {//创建js
js = document.createElement("script");
js.type = "text/javascript";
js.src = url;
head.appendChild(js);
return js;
};
for (; i if (cache[encodeURIComponent((_url = url[i++]))]) {//如果加载过
(++ok >= len && fn) && fn();//如果加载完所有的js则执行回调
continue;
}
cache[encodeURIComponent(_url)] = !0;//设置缓存
js = create(_url);//创建js
fn && (js.onload = function() {
if (++ok >= len) {//如果加载完所有的js则执行回调
fn();
}
});
};
head = js = _url = create = null;
return this;
}
})();