87,907
社区成员
发帖
与我相关
我的任务
分享
if (script.readyState) { //IE
script.onreadystatechange = function() {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function() {
callback();
};
}
看上面代码,意思说加载完“2-1.js”就callback()加载“2-2.js”,这时候“2-1.js”加载完了应该就运行,那就会弹出3。那加载“2-2.js”完成了,那又不是要运行callback()?这时候的就应该会运行alert("1end"),而“2-2.js”加载完运行了。
//1.js
alert('1begin');
loadScript("2-1.js", function(){
loadScript("2-2.js", function(){
alert("1end");
});
});
//2-1.js
alert("2-1begin");
loadScript("3.js", function(){
alert("2-1end");
});
//2-2.js
alert("2-2begin");
loadScript("3.js", function(){
alert("2-2end");
});
//3.js
alert(3);
输出是
//Chrome23
1begin
2-1begin
3
2-1end
2-2begin
1end
3
2-2end
1end应该是最后输出的才对吧。
loadScript("file1.js", function(){
loadScript("file2.js", function(){
loadScript("file3.js", function(){
alert("All files are loaded!");
});
});
});
function loadScript(url, callback){
var script = document.createElement ("script")
script.type = "text/javascript";
if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" || script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function(){
callback();
};
}
script.src = url;
document.getElementsByTagName_r("head")[0].appendChild(script);
}