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 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐base.js
Dec 23 Javascript
js分解url参数(面向对象-极简主义法应用)
Aug 09 Javascript
页面定时刷新(1秒刷新一次)
Nov 22 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
Jul 22 Javascript
基于javascript实现表格的简单操作
May 21 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
Jun 07 Javascript
vue实现前端列表多条件筛选
Oct 26 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
关于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 生成文字png图片的代码
2011/04/17 PHP
Js 刷新框架页的代码
2010/04/13 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
市场营销专业个人求职信范文
2013/12/14 职场文书
十八大感想感言
2014/02/10 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
团队经理竞聘书
2014/03/31 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
关于安全的广播稿
2014/10/23 职场文书
办公用房租赁协议书
2014/11/29 职场文书
公司给客户的感谢信
2015/01/23 职场文书
保洁员岗位职责
2015/02/04 职场文书
单身申明具结书
2015/02/26 职场文书
致接力运动员加油稿
2015/07/21 职场文书
培训感想范文
2015/08/07 职场文书
导游词之青城山景区
2019/09/27 职场文书
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android