【问题标题】:Browser-independent way of using DOMDocument in Jscript在 Jscript 中使用 DOMDocument 的独立于浏览器的方式
【发布时间】:2012-04-30 11:53:46
【问题描述】:

创建必须在其中创建 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 类的概述?

【问题讨论】:

    标签: javascript jquery internet-explorer-9 domdocument


    【解决方案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

    【讨论】:

    • 为此,我需要知道每个浏览器类型+版本可用的 DOM 类列表:-(
    猜你喜欢
    • 2018-03-04
    • 2012-06-19
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2020-09-04
    • 2014-04-09
    • 2017-10-20
    相关资源
    最近更新 更多