0

创建必须在其中创建 DOMDocument 的独立于浏览器的 Jscript 代码的最佳方法是什么?
我有这段代码(摘自@MartinHonnen 对我的问题的回答How can make an XSLT Javascript extension function return a node-set?):

function tokenize (input) {
    var doc = new ActiveXObject('Msxml2.DOMDocument.6.0');
    ...
    }

它在 MSXML 6.0 XSLT 处理器(注意 Jscript 嵌入在 xslt 工作表中)和 IE9 中运行良好(虽然奇怪的是不是每次都 - 在这里进入调试模式似乎有点帮助),但没有这样做在 IE8 中很好,必须更改类Msxml2.DOMDocument.3.0才能使其正常工作。显然 IE8 Jscript 支持 MSXML 3.0 但不支持更高版本。

所以现在我正在寻找使用 DOMDocument 的与浏览器类型和浏览器版本无关的代码。
谁能给我这个?
我添加Jquery为标签,因为在那里可以找到最好的解决方案。
附带问题:我在哪里可以找到关于哪个浏览器类型+版本支持哪个 DOM 类的概述?

4

1 回答 1

1

你需要调整CreateXmlHttpReq函数来处理不同类型的 Microsoft 的 ActiveXObjects

function CreateXmlHttpReq(handler) {
    var xmlhttp = null;

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        var types = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Microsoft.XMLHTTP"];

        for (var i = 0; i < types.length; i++) {
            try {
                xmlhttp = new ActiveXObject(types[i]);
                break;
            } catch(e) {}
        }
    }

    if (xmlhttp) {
         xmlhttp.onreadystatechange = handler;
    }

    return xmlhttp;
}

参考: https ://stackoverflow.com/a/10389829/1237812

于 2012-04-30T20:12:58.680 回答