张经纬的博客 -

利用控制器载入对应脚本

因项目开发需要,须将每一个方法都独立成单独的js文件以便载入、维护,所以,必须需要有一个控制器用于载入这些方法。

我的思路是,在编写独立模块的时候,注意将这些方法集成到$.tools对象中,接下来,在页面中,调用控制器载入模块,并在载入完成后判断$.tools中对象的个数与预定义载入的模块数是否相等,如不等继续等待,如相等执行回调函数。

/*
* LOADScript Mod
* Params url1,url2,url3,url4,fn
*/
jQuery.extend({
	loadMod: function(){
		var argleng = arguments.length,
				arglast = arguments[argleng-1],
				fn = false,
				queue = [],
				checknum = 0,
				timer = null
		;
		// init
		if(jQuery.isFunction(arglast)){argleng = argleng -1;fn=arglast;}
		for (var i=0;i<argleng ;i++){
			queue.push(arguments[i]);
		}
 
		// getscript
		jQuery.each(queue,function(i,o){
			jQuery.getScript(o);
		});
 
		// check load ready?
		loadReady();
 
		function loadReady(){
			if(jQuery.tools != undefined){
				checknum = 0;
				$.each(jQuery.tools,function(i,n){
					if(jQuery.isPlainObject(n)){checknum++;}
				});
			}
			if(checknum != argleng){
					clearTimeout(timer);
					timer = setTimeout(loadReady, 100);
			}else{
					if(!!fn){fn.call(document.jQuery)}
			}
 
		}
	}
});
 
// 使用方法
$.loadMod('a.js','b.js','c.js',function(){
  alert('success!');
});

原文链接|

目前 还没有人评论 ,点此发表评论