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 错误处理与调试经验总结
Aug 10 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
document.addEventListener使用介绍
Mar 07 Javascript
javascript去除空格方法小结
May 21 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
Jun 14 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
Mar 03 Javascript
基于JavaScript实现验证码功能
Apr 01 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
Jul 11 Javascript
Vue Router去掉url中默认的锚点#
Aug 01 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/08 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
php curl选项列表(超详细)
2013/07/01 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
PDO::prepare讲解
2019/01/29 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
layui表格实现代码
2017/05/20 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
小学趣味运动会加油稿
2014/09/25 职场文书
个人查摆剖析材料
2014/10/16 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android