javascript写的异步加载js文件函数(支持数组传参)
自己用的加载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(){ varcache={};//内部缓存下url,下次则不请求 returnfunction(url,fn){ if("string"===typeof(url)){ url=[url];//如果不是数组带个套 }; vari=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); returnjs; }; 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; returnthis; } })();