论坛首页 Web前端技术论坛

动态加载js

浏览 3619 次
锁定老帖子 主题:动态加载js
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-05-30  

动态加载js

 

以下为代码

var loaduri = {
	version:'1.0',
	script:function(libraryName)
	{
		document.write('<script type="text/javascript" src="'+libraryName+'"></script>');		
	},
	load:function(){
		var scriptTags = document.getElementsByTagName("script");
		for(var i=0;i<scriptTags.length;i++)
		{
			if(scriptTags[i].src && scriptTags[i].src.match(/loadJS\.js$/))
			{
				var path = scriptTags[i].src.replace(/loadJS\.js$/,"");
				//path = HtmlCode.htmlDecode(path);
				path = decodeURI(path);
				this.script(path + 'amq.js');
				this.script(path + 'amq2.js');
				this.script(path + 'amq3.js');
				//this.script('./amq.js');
				//this.script('./amq2.js');
				//this.script('./amq3.js');
				break;
			}
		}
	}
}

loaduri.load();//加载
 
   发表时间:2012-05-30  
貌似很高深的样子
0 请登录后投票
   发表时间:2012-05-30  
你这么做在网速慢的情况下是行的把,不可控js文件下载完成的时间
如果在js文件没有加载完成的时候,调用了js里面的函数就会报错了
0 请登录后投票
   发表时间:2012-05-31  
不错的代码,我先保留。对于细节还没看。
个人技术博客:http://www.happyalaric.com/欢迎拍砖
0 请登录后投票
   发表时间:2012-05-31  
据说, 依此类推, 是这样,  我还是贴代码吧

var loadScript = function(url, callback){
          var script = document.createElement('script');
          script.type = 'text/javascript';
          if(script.readyState){
               script.onreadystatechange = function(){
                    if(script.readyState == 'loaded' ||     script.readyState == 'complete'){
                         script.onreadystatechange = null;
                         callback.call(this);
                    }
               };
          }else{
               script.onload = function(){
                    callback.call(this);
               };
          }
     };
0 请登录后投票
   发表时间:2012-06-01   最后修改:2012-06-01
www.usinan.com使用的代码:
/*
 * o的结构 {js:['a.js'],css:['a.css'],callback:function(){}}
 */
Common.jsCssLoadRun = function(o) {
	var count = 0;
	var scriptTag, linkTag;
	var scriptFiles = o.js;
	var cssFiles = o.css;
	var head = document.getElementsByTagName('head')[0];

	for ( var k = 0; k < cssFiles.length; k++) {
		linkTag = document.createElement('link');
		linkTag.type = 'text/css';
		linkTag.rel = 'stylesheet';
		linkTag.href = cssFiles[k];
		head.appendChild(linkTag);
	}

	for (k = 0; k < scriptFiles.length; k++) {
		scriptTag = document.createElement('script');
		scriptTag.type = 'text/javascript';
		scriptTag.charset = 'utf-8';
		scriptTag.src = scriptFiles[k];
		head.appendChild(scriptTag);
		if (typeof o.callback == "function") {
			if (scriptTag.readyState) { // IE
				scriptTag.onreadystatechange = function() {
					if (scriptTag.readyState == "loaded"
							|| scriptTag.readyState == "complete") {
						count++;
						if (count == scriptFiles.length)
							o.callback.call();
					}
				};
			} else { // other browsers
				scriptTag.onload = function() {
					count++;
					if (count == scriptFiles.length)
						o.callback.call();
				};
			}
		}
	}

	if (scriptFiles.length == 0) {
		o.callback.call();
	}
};
0 请登录后投票
   发表时间:2012-06-08  
页面加载完成后,再调用document.write会重写整个页面。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics