Posted in Javascript onJune 07, 2014
自己用的加载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]; //如果不是数组带个套 }; 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; } })();
javascript写的异步加载js文件函数(支持数组传参)
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@