JS脚本动态加载,以及加载完成后执行回调

document.getElementById("uccenter").innerHTML=data.ucString; 
				 var myDivScript = document.getElementById("uccenter").getElementsByTagName("script").item(0);
				 var myDivScript2 = document.getElementById("uccenter").getElementsByTagName("script").item(1);
				 var newScript = document.createElement("script");
				 var newScript2 = document.createElement("script");
				 newScript.setAttribute("src",myDivScript.getAttribute("src"));
				 newScript.setAttribute("reload",myDivScript.getAttribute("reload"));
				 newScript.innerHTML = myDivScript.innerHTML;
				 
				 document.getElementsByTagName("HEAD").item(0).appendChild(newScript); 
				 newScript.onload = newScript.onreadystatechange = function(){
					 newScript2.setAttribute("src",myDivScript2.getAttribute("src"));
					 newScript2.setAttribute("reload",myDivScript2.getAttribute("reload"));
					 newScript2.innerHTML = myDivScript2.innerHTML;
					 document.getElementsByTagName("HEAD").item(0).appendChild(newScript2); 
					 newScript2.onload = newScript2.onreadystatechange = function(){
						 window.location.reload();
					 };
				 };


这段代码动态的创建2个js脚本,脚本是由ajax获取到服务器action返回的2段js脚本。

获取之后,先创建2个js对象


var newScript = document.createElement("script");

var newScript2 = document.createElement("script");


然后是动态加载这两个js对象,加载完毕之后刷新页面。因为这里是要动态把js对象加载到页面head中,让它们执行。如果在加载完之前就刷新页面,那么就无法达到执行两端js代码的目的。所以需要在两个js对象都加载完毕之后再执行刷新操作。

这里是串行的加载:


newScript.onload = newScript.onreadystatechange = function(){

newScript2.onload = newScript2.onreadystatechange = function(){
						 window.location.reload();
					 };
}



如果要实现并行加载,则要加一个加载计数变量,用来在每个js对象的加载完毕事件中判断是否所有的js代码都加载完毕了。

 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值