我有这个代码...

这会渲染一些,但我不能使用该javascript文件功能...可以做什么呢?

最佳答案

您的脚本将异步加载,因此您不能立即使用它们。给他们一个onload处理程序,以便您知道何时准备好:

var oScript = document.createElement("script");
oScript.type = "text/javascript";
oScript.src = x[i].childNodes[0].nodeValue;
oScript.onload = function () {
    // run bar, which is contained in foo.js
    bar();
};
oHead.appendChild(oScript);




如果要确保已加载所有脚本,则可以创建一个计数器:

function counter(count, callback) {
    return function() {
        count -= 1;
        if (count === 0) {
            callback();
        }
    }
}


并将其传递给每个负载处理程序:

var x = xmlDoc.getElementsByTagName("script"),
    countdown = counter(x.length, function(){ alert("All scripts loaded!"; });
for (i = 0; i < x.length; i++) {
    var oScript = document.createElement("script");
    oScript.type = "text/javascript";
    oScript.src = x[i].childNodes[0].nodeValue;
    oScript.onload = countdown;
    oHead.appendChild(oScript);
}

10-06 15:28