自己用的加载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; } })();