您现在的位置:首页 --> JavaScript --> JS文件装载器(Eve Js Loader)
JS文件装载器(Eve Js Loader)
浏览:2170次 出处信息
最近的项目中,需要对于不同的用户角色分别读取不同的的JS文件簇, 从而避免一次载入全部JS文件, 于是就写了一个简单的JS Loader.
这个loader, 每次载入一个js文件, 在前一个文件完全载入后, 才继续载入下一个文件.
Loader提供了俩个事件:
一个完整的实例, 看这里: Eve Js loader
例子:
以下是代码片段: var loader = Loader; loader.onReady = function(){ alert(’全部载入完成’); } loader.on(’onLoad’, function(name) { alert(name + ’载入完成’); }); loader.load([ ’http://www.laruence.com/1.js’, ’http://www.laruence.com/test.js’, ’http://www.laruence.com/main.js’ ] |
Loader.js
以下是代码片段: /** * Eve Js Loader * @version 1.0.1 * @author laruence<laruence at yahoo.com.cn> * @copyright (c) 2009 www.laruence.com */ /** * a global object instance, you can easily change to a class definition */ var Loader = { /** * @var onLoad when load a individual file completed , * this event will be fired * @param string name loaded script file name */ onLoad : function(name){}, /** * @var onReady when all scripts loaded, this event will be fired */ onReady : function(){}, /** * a empty constructor */ init : function(container) { }, /** * a empty error handler */ handlerError : function(e) { alert(e); }, /** * event register * @param string evt event name * @param function handler */ on : function(evt, handler) { switch ( evt.toLowerCase() ) { case ’load’ : this.onLoad = handler; break; case ’ready’ : this.onReady = handler; break; default : break; } return true; }, /** * private method */ _load : function(path, callback) { try { var script = document.createElement(’script’); script.src = path; script.type = "text/javascript"; document.getElementsByTagName("head")[0].appendChild(script); if( script.addEventListener ) { script.addEventListener("load", callback, false); } else if(script.attachEvent) { script.attachEvent("onreadystatechange", function(){ if(script.readyState == 4 || script.readyState == ’complete’ || script.readyState == ’loaded’) { callback(); } }); } } catch(e) { this.handlerError(e); callback(); } }, /** * start loding process * @param array scripts files want to be loaded */ load : function(scripts) { var total = scripts.length; var _self = this; var indicator = arguments[1] || 0; if ( indicator >= total ) { _self.onReady(); return true; } var callee = arguments.callee; var script = scripts[indicator]; this._load(script, function() { _self.onLoad(script); callee.apply(_self, [scripts, ++indicator]); }); return true; } } |
备忘: http://code.google.com/p/evejsloader/
建议继续学习:
- 海量小文件存储 (阅读:7736)
- 其实,文件也可以truncate (阅读:7536)
- 关于Linux的文件系统cache (阅读:4924)
- Perl 倒行分析文件方法。perl读文本文件,从末尾往前读. (阅读:4571)
- 修改系统最大文件句柄数 (阅读:4408)
- linux file命令是如何识别文件的类型的 (阅读:4135)
- PHP:从一个大文件第N行开始读取M行 (阅读:4060)
- C/C++循环获取文件中的每行数据(别以为很简单!) (阅读:4012)
- 打开多个文件:linux ulimit max open files (阅读:3621)
- shell文件存在相关判断参数 (阅读:3627)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:使用JS做文档处理
后一篇:Javascript作用域原理 >>
文章信息
- 作者:雪候鸟 来源: 风雪之隅
- 标签: 文件 装载器
- 发布时间:2009-10-29 14:08:23
建议继续学习
近3天十大热文
-
[76] memory prefetch浅析
-
[51] find命令的一点注意事项
-
[38] 基本排序算法的PHP实现
-
[33] 卡诺模型―设计品质与设计价值的思考
-
[32] Oracle bbed工具的编译
-
[26] 8大实用又重要Mac使用技巧
-
[26] 程序员技术练级攻略
-
[25] 两行 JavaScript 代码
-
[24] 读书笔记-壹百度:百度十年千倍的29条法则
-
[22] 小屏幕移动设备网页设计注意事项