我有一个在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