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代码都加载完毕了。