ExtJS XML字段在Chrome中工作,但不在IE或FF中

时间:2017-07-12 18:24:38

标签: javascript xml google-chrome firefox extjs

我有一个ExtJs网格,它在Chrome中渲染,但不在其他浏览器中渲染。我认为这可能是我的字段定义方式,其他浏览器是否还需要其他选项?

IE中的错误:

SCRIPT438:对象不支持此属性或方法

...返回nodupIEXml(cs)} d = ++ key; cs [0] ._ nodup = d; ..

代码

Ext.onReady(function(){
    var doc;
            var isIE = /*@cc_on!@*/false || !!document.documentMode;
            if(isIE == true){        //IE
                doc = new ActiveXObject("Microsoft.XMLDOM");
                doc.async = "false";
                doc.loadXML(xml);
                addLinks(doc);
            } else {                             //Mozilla
                doc = new DOMParser().parseFromString(xml, "text/xml");
                addLinks(doc);
            }
            var gridStore = Ext.create('Ext.data.XmlStore', {
                autoload: true,
                data: doc,
                proxy: {
                    type: 'memory',
                    reader: {
                        type: 'xml',
                        record: 'content'
                    }
                },
                fields: [
                    'Title',
                    'Description',
                    'Modified'
                ]
            });
});

fiddle

1 个答案:

答案 0 :(得分:1)

事情就是这样,Chrome的查询选择器往往比其他浏览器更宽松。

例如<foo:bar>查询的xml.getElementsByTagName('bar');标记 Chrome将返回1个结果,Firefox fox将返回0。

ExtJS具有XMLReader namespace的特定配置,专门用于处理此问题(请参阅:http://docs.sencha.com/extjs/6.5.0/classic/Ext.data.reader.Xml.html#cfg-namespace)。

您只需将namespace: 'd'添加到XML阅读器即可。另外,出于同样的原因,addLinks功能无法正常工作,因此data.getElementsByTagName必须替换为data.querySelectorAll

我更新了你的小提琴:https://fiddle.sencha.com/#view/editor&fiddle/238v