在Jscript中使用DOMDocument的独立于浏览器的方式

时间:2012-04-30 11:53:47

标签: javascript jquery internet-explorer-9 domdocument

创建独立于浏览器的Jscript代码的最佳方法是什么?必须在其中创建DOMDocument?
我有这段代码(摘自@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类的概述?

1 个答案:

答案 0 :(得分: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