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 相关文章推荐
关于Mozilla浏览器不支持innerText的解决办法
Jan 01 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
Nov 13 Javascript
JS获取iframe中longdesc属性的方法
Apr 01 Javascript
深入理解JavaScript中的对象
Jun 04 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
深入浅析JS中的严格模式
Jun 04 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
Dec 15 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 magic quotes的详解
2013/06/17 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python socket聊天脚本代码实例
2020/01/02 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
python中reload重载实例用法
2020/12/15 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
管道维修工岗位职责
2013/12/27 职场文书
医院实习接收函
2014/01/12 职场文书
校园奶茶店创业计划书
2014/01/23 职场文书
2014年实习期工作总结
2014/11/27 职场文书
导游词之岳阳楼
2019/09/25 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
python 详解turtle画爱心代码
2022/02/15 Python