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

来源:互联网 发布:qq炫舞 mac 编辑:程序博客网 时间:2024/05/16 01:31
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
原创粉丝点击