我有一个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'
]
});
});
答案 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