javascriptの書く非同期はjsファイル関数をロードします(配列参照をサポートします).
1582 ワード
自分用のjsファイルをロードして、多ファイルをサポートします.
/**
* 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 < len;) {
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;
}
})();