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 相关文章推荐
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
不同的jQuery API来处理不同的浏览器事件
Dec 09 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
Nov 05 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
JavaScript实现表格快速变色效果代码
Aug 19 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
three.js实现3D模型展示的示例代码
Dec 31 Javascript
vue router的基本使用和配置教程
Nov 05 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
Mar 20 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 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
PHPLog php 程序调试追踪工具
2009/09/09 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
修改发贴的编辑功能
2007/03/07 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
Python连接Redis的基本配置方法
2018/09/13 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
Python操作Jira库常用方法解析
2020/04/10 Python
python 画图 图例自由定义方式
2020/04/17 Python
什么是Python包的循环导入
2020/09/08 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
电子商务专业个人的自我评价
2013/12/19 职场文书
小学防溺水制度
2014/01/29 职场文书
导游词开场白
2015/01/31 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
幼儿园见习总结
2015/06/23 职场文书
高中英语教学反思范文
2016/03/02 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL