简单的dojo.在IE中查询xml文档失败

Simple dojo.query over xml document fails in IE

本文关键字:查询 xml 文档 失败 IE dojo 简单      更新时间:2023-09-26

我有一个非常简单的dojo.query在一个xml文档是在FireFox和Chrome工作,但在IE失败。在IE中,这一行给出了错误'undefined' is null or not an object

var result = dojo.query("list > country", response);

dojo中的错误发生在eval代码中,在下面的函数中。行号为791

// get an array of child *elements*, skipping text and comment nodes
var _childElements = function(filterFunc){
    filterFunc = filterFunc||yesman;
    return function(root, ret, bag){
        // get an array of child elements, skipping text and comment nodes
        var te, x = 0, tret = root[childNodesName];
        // THE ERROR HAPPENS HERE.  tret is 'undefined'
        while(te = tret[x++]){
            if(
                _simpleNodeTest(te) &&
                (!bag || _isUnique(te, bag)) &&
                (filterFunc(te, x))
            ){
                ret.push(te);
            }
        }
        return ret;
    };
};

我已经确认(通过IE开发人员工具)响应是有效的,并且被设置为IXMLDOMDocument2的实例,具有适当的子节点。dojo.xhrGet方法提供的响应,其中我有handleAs: "xml"

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<countries>
 <list>
   <country>
    <code>1</code>
    <name>UNITED STATES</name>
   </country>
   <country>
    <code>2</code>
    <name>UNITED KINGDOM</name>
   </country>
   <!-- Snip -->
  </list>
</countries>

dojo.query是第一次尝试访问result变量。这是已知的问题吗?有解决办法吗?

我刚刚确认你遇到了一个dojo bug。你可以通过升级到1.7来修复它,或者你可以尝试应用那个补丁来改变

的出现次数。
root[childNodesName]

root.children || root.childNodes

在dojo/selector/acme.js文件