【问题标题】:Empty ActiveXObject("Microsoft.XMLDOM") in IE 11IE 11 中的空 ActiveXObject("Microsoft.XMLDOM")
【发布时间】:2014-08-23 13:39:20
【问题描述】:

我正在使用ActiveXObject("Microsoft.XMLDOM"); 来帮助加载我拥有的 XML 文件。我知道 IE 11 现在支持 DOMparser,但是在阅读了这个 stack mover flow post 之后,似乎 IE 11 仍然支持 Active X。所以按照建议我有这个代码

try {               
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            console.log(xmlDoc);
            xmlDoc.async = false;
            console.log(xml);
            xmlDoc.loadXML(xml);

            return xmlDoc;
        } catch (e) {
            console.log(e);               
            try {
                var parser = new DOMParser();
                xmlDoc = parser.parseFromString(xml, "text/xml");               
                return xmlDoc;
            }catch(e) {
                console.log(e); //Tesitng for error in chrome
            }                
        }     

问题是 Active X 中的对象是空的

我做错了吗?忘了设置什么?还是 IE 11 在较新版本中停止支持 Active X 对象?我很想使用 DOM 解析器,但 IE 不支持 XPathResult

编辑

@Teemu 说 ActiveXObj 没有toString() 进一步向下我的代码是

//the function loadXMLDocStr calls the above code
var xmlDoc = GenFunctions.loadXMLDocStr(theXml); 
        var xmlNode;          
        try {              
            xmlNode = xmlDoc.selectNodes("//tfields/data[contains(@options, 'formatcurrency')]");               
        } catch (e) {               
            var listofNode;
            listofNode = xmlDoc.evaluate("//fields/data[contains(@options, 'formatcurrency')]", xmlDoc, null, XPathResult.ANY_TYPE, null);               
            xmlNode = new Array();                
            var node = listofNode.iterateNext();
            while (node) {                    
                xmlNode.push(node);
                node = listofNode.iterateNext();
            }               
        }           
        GenFunctions.populateSelect("field", xmlNode, "name", "col", true, "description", null);
    }

结果如上,但这次我包含了有关 XPATHResult 的错误。

如您所见,它成功创建了 Active X 对象,但是当我调用 selectNode 时,它出错并尝试使用 XPATHResult 调用用于 DOMParser 的代码 那么为什么 Active X对象为空?

【问题讨论】:

  • 嗯 IE11 支持 DOMParser 所以应该可以工作....
  • @epascarello 问题是IE不支持XPATHResult,如果我使用DOMParser,我需要它才能从XML中获取节点
  • 注意,ActiveX 通常没有toString() 方法,并且它们可能无法枚举(至少通过任何 JS 方法),因此您无法使用控制台检查它们的属性。跨度>
  • @Teemu 有道理。我将扩展问题以更好地反映某些问题。

标签: javascript internet-explorer dom xml-parsing activex


【解决方案1】:

如果我想使用Microsoft.XMLDOM,我必须添加xmlDoc.setProperty("SelectionLanguage", "XPath");。我在代码中唯一改变的是我添加了一段新代码

try {
            xmlDoc.setProperty("SelectionLanguage", "XPath");
            xmlNode = xmlDoc.selectNodes("//fields/data[contains(@options, 'formatcurrency')]");                
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2014-11-09
    相关资源
    最近更新 更多