javascript寫的異步加載js文件函數(shù)(支持?jǐn)?shù)組傳參)
更新時(shí)間:2014年06月07日 11:41:28 作者:
這篇文章主要介紹了javascript寫的異步加載js文件函數(shù),同時(shí)支持單個(gè)文件和多個(gè)文件(數(shù)組傳參),但不兼容IE6,需要的朋友可以參考下
自己用的加載js文件,支持多文件,不兼容ie
復(fù)制代碼 代碼如下:
/**
* 加載js文件
* @param {string || array} url js路徑
* @param {Function} fn 加載完成后回調(diào)
* @return {object} game對(duì)象
* @example
* getScript("url.js",fn)
* getScript(["url-1.js","url-2.js"],fn)
*/
game.getScript = (function() {
var cache = {};//內(nèi)部緩存下url,下次則不請(qǐng)求
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;
}
})();
相關(guān)文章
Javascript中的方法鏈(Method Chaining)介紹
這篇文章主要介紹了Javascript中的方法鏈(Method Chaining)介紹,本文講解了Javascript Method Chaining、Method Chaining 使用、Method Chaining VS prototype Chaining等內(nèi)容,需要的朋友可以參考下2015-03-03JS實(shí)現(xiàn)的合并多個(gè)數(shù)組去重算法示例
這篇文章主要介紹了JS實(shí)現(xiàn)的合并多個(gè)數(shù)組去重算法,涉及javascript數(shù)組遍歷、判斷、運(yùn)算、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04javascript+HTML5的canvas實(shí)現(xiàn)七夕情人節(jié)3D玫瑰花效果代碼
這篇文章主要介紹了javascript+HTML5的canvas實(shí)現(xiàn)七夕情人節(jié)3D玫瑰花效果代碼,使用了html5的canvas技術(shù),可呈現(xiàn)出帶有3D效果的玫瑰花漸顯效果,非常逼真自然,需要的朋友可以參考下2015-08-08JavaScript的變量聲明與聲明提前用法實(shí)例分析
這篇文章主要介紹了JavaScript的變量聲明與聲明提前用法,結(jié)合實(shí)例形式分析了JavaScript變量聲明與聲明提前相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11