javascript寫的異步加載js文件函數(shù)(支持數(shù)組傳參)
更新時間:2014年06月07日 11:41:28 作者:
這篇文章主要介紹了javascript寫的異步加載js文件函數(shù),同時支持單個文件和多個文件(數(shù)組傳參),但不兼容IE6,需要的朋友可以參考下
自己用的加載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]; //如果不是數(shù)組帶個套
};
var i = 0,//循環(huán)起
ok = 0,//加載成功幾個js
len = url.length,//一共幾個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í)行回調
continue;
}
cache[encodeURIComponent(_url)] = !0;//設置緩存
js = create(_url);//創(chuàng)建js
fn && (js.onload = function() {
if (++ok >= len) {//如果加載完所有的js則執(zhí)行回調
fn();
}
});
};
head = js = _url = create = null;
return this;
}
})();
相關文章
javascript設計模式 – 迭代器模式原理與用法實例分析
這篇文章主要介紹了javascript設計模式 – 迭代器模式原理與用法,結合實例形式分析了javascript迭代器模式相關概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04
Javascript 原型和繼承(Prototypes and Inheritance)
前面我們看到了如何使用 constructor 來初始化對象。如果這樣做,那么每一個創(chuàng)建的新對象都會對那些相同的屬性,方法建立一個獨立的副本。而實際上有更加有效的方法來指定方法,常量,以及其他一些可被所有該類的對象共享的屬性。2009-04-04
用javascript實現(xiàn)無刷新更新數(shù)據(jù)的詳細步驟 asp
用javascript實現(xiàn)無刷新更新數(shù)據(jù)的詳細步驟 asp...2006-12-12

