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 相关文章推荐
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
Jun 14 Javascript
js获取和设置属性的方法
Feb 20 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
javascript中replace( )方法的使用
Apr 24 Javascript
js获取url传值的方法
Dec 18 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 Javascript
Vue 实现登录界面验证码功能
Jan 03 Javascript
webpack中的模式(mode)使用详解
Feb 20 Javascript
解决vue项目运行npm run serve报错的问题
Oct 26 Javascript
vscode中使用npm安装babel的方法
Aug 02 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
Python最小二乘法矩阵
2019/01/02 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
vscode调试django项目的方法
2020/08/06 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
生产部厂长职位说明书
2014/03/03 职场文书
合作意向书模板
2014/03/31 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
2014年科研工作总结
2014/12/03 职场文书
世界文化遗产导游词
2015/02/13 职场文书
父亲节寄语大全
2015/02/27 职场文书
爱心募捐通知范文
2015/04/27 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技