- 相關(guān)推薦
javascript寫的異步加載js文件函數(shù)
自己用的加載js文件,支持多文件,不兼容ie
復(fù)制代碼 代碼如下:
/**
* 加載js文件
* @param {string || array} url js路徑
* @param {Function} fn 加載完成后回調(diào)
* @return {object} game對象
* @example
* getScript("url.js",fn)
* getScript(["url-1.js","url-2.js"],fn)
*/
game.getScript = (function() {
var cache = {};//內(nèi)部緩存下url,下次則不請求
return function(url, fn) {
if ("string" === typeof(url)) {
url = [url]; //如果不是數(shù)組帶個(gè)套
};
var i = 0,//循環(huán)起
ok = 0,//加載成功幾個(gè)js
len = url.length,//一共幾個(gè)js
head = document.getElementsByTagName("head")[0],
js, _url,
create = function(url) {//創(chuàng)建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則執(zhí)行回調(diào)
continue;
}
cache[encodeURIComponent(_url)] = !0;//設(shè)置緩存
js = create(_url);//創(chuàng)建js
fn && (js.onload = function() {
if (++ok >= len) {//如果加載完所有的js則執(zhí)行回調(diào)
fn();
}
});
};
head = js = _url = create = null;
return this;
}
})();
【javascript寫的異步加載js文件函數(shù)】相關(guān)文章:
淺析jQuery 遍歷函數(shù)javascript08-06
Javascript函數(shù)的定義和用法分析08-15
JavaScript中push(),join() 函數(shù)實(shí)例詳解09-05
最常用的20個(gè)javascript方法函數(shù)09-10
JavaScript日期時(shí)間格式化函數(shù)08-29
JS AJAX前臺如何給后臺類的函數(shù)傳遞參數(shù)的方法07-08
JavaScript中常見的字符串操作函數(shù)及用法07-24
有關(guān)javascript實(shí)現(xiàn)的多個(gè)層切換效果通用函數(shù)示例10-07