javascript - 通过 xml 文件包含 javascript 文件

标签 javascript xml

我有这个代码...

    <script type="text/javascript">
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET", "Client-Controls/ClientGridView.xml", true);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;

    var oHead = document.getElementsByTagName('HEAD').item(0);
    var x = xmlDoc.getElementsByTagName("script");
    for (i = 0; i < x.length; i++) {
        var oScript = document.createElement("script");
        oScript.language = "javascript";
        oScript.type = "text/javascript";
        oScript.src = x[i].childNodes[0].nodeValue;
        oHead.appendChild(oScript);
    }
</script>

这渲染了一些,但我无法使用该 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);
}

关于javascript - 通过 xml 文件包含 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14756098/

相关文章:

javascript - 如何防止在特定 HTML 元素上执行 javascript/jquery?

java - cvc-complex-type.2.4.c : The matching wildcard is strict, 但找不到元素 'property' 的声明

android - 适用于手机和平板电脑

java - 有没有一种方法可以直接将 XML 转换为 JSON,并删除命名空间,而不需要任何中间的 XML 到 XML 转换?

sql-server - 如何使用带有多个子节点的sql将表数据转换为xml格式

Java保存字符串

javascript - 动态填充复选框并在勾选函数调用服务器端

javascript - setinterval 说没有定义函数,但它是

javascript - 如何将 getChildContext 与功能组件一起使用

javascript - 正则表达式排除不排除字符串仅第一个字符