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 中字符串连接的性能的一些问题
May 07 Javascript
动态的创建一个元素createElement及删除一个元素
Jan 24 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 Javascript
JavaScript原生节点操作小结
Jan 17 Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 Javascript
vue router使用query和params传参的使用和区别
Nov 13 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
详解AngularJS之$window窗口对象
Jan 17 Javascript
微信小程序实现YDUI的ScrollNav组件
Feb 02 Javascript
ES6下子组件调用父组件的方法(推荐)
Feb 23 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
Jul 20 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/05/16 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
Javascript----文件操作
2007/01/18 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
护士在校生自荐信
2014/02/01 职场文书
五年级数学教学反思
2014/02/11 职场文书
电力培训心得体会
2014/09/02 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
运动会加油稿50字
2015/07/21 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
openstack云计算keystone组件工作介绍
2022/04/20 Servers