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

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

最佳答案

事实就是这样,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 Reader中,它将起作用。同样,出于相同的原因,您的addLinks函数将不起作用,因此data.getElementsByTagName必须替换为data.querySelectorAll

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

09-11 19:46
查看更多