javascript写的异步加载js文件函数(支持数组传参)


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 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
ext checkboxgroup 回填数据解决
Aug 21 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
jQuery中element选择器用法实例
Dec 29 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
浅谈关于JavaScript API设计的一些建议和准则
Jun 24 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
Aug 13 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
原生JS实现手动轮播图效果实例代码
Nov 22 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
Jan 04 Javascript
关于JavaScript命名空间的一些心得
Jun 07 #Javascript
javascript随机之洗牌算法深入分析
Jun 07 #Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
Jun 07 #Javascript
js中的caller和callee属性介绍和例子
Jun 07 #Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 #Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 #Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 #Javascript
You might like
web方式ftp
2006/10/09 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
关于JS中的闭包浅谈
2013/08/23 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
为什么要用EJB
2014/04/17 面试题
基于Python 函数和方法的区别说明
2021/03/24 Python
离婚协议书怎么写
2014/09/12 职场文书
督导岗位职责范本
2015/04/10 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
交通事故被告代理词
2015/05/23 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
Golang入门之计时器
2022/05/04 Golang