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 相关文章推荐
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
jQuery 版元素拖拽原型代码
Apr 25 Javascript
Javascript中Event属性搜集整理
Sep 17 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
简单讲解jQuery中的子元素过滤选择器
Apr 18 Javascript
基于Vue2.0的分页组件
Mar 16 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
详谈表单格式化插件jquery.serializeJSON
Jun 23 jQuery
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
详解axios 全攻略之基本介绍与使用(GET 与 POST)
Sep 15 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
详解node.js 事件循环
Jul 22 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
PHP 反向排序和随机排序代码
2010/06/30 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
php实现文章评论系统
2019/02/18 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
一些不错的js函数ajax
2008/08/20 Javascript
浅说js变量
2011/05/25 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
python操作xml文件示例
2014/04/07 Python
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
Django 解决由save方法引发的错误
2020/05/21 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
python-地图可视化组件folium的操作
2020/12/14 Python
如何用python写个模板引擎
2021/01/14 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
会计专业自我鉴定范文
2013/12/29 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
事业单位考核材料
2014/05/21 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
北京颐和园导游词
2015/01/30 职场文书
先进个人总结范文
2015/02/15 职场文书