我正在将项目从ExtJs4迁移到ExtJs5 。
在我的 Firefox(版本33.0.2) -Debug-View (Firebug版本2.0.4)中,我可以看到以下控制台输出,刷新浏览器窗口后:
TypeError: dom.querySelectorAll is not a function
http://localhost:8080/ext/build/ext-all-debug.js
Line 34531
如何解决该错误 或 如何找出我自己的代码的哪一部分导致 ext-all-debug.js 唠叨?
答案 0 :(得分:0)
在放置多个 console.log()之后,我将 ext-all-debug.js 中定义的原生ExtJs5 cacheRefEls 功能调整为以下内容/ strong>进入它,这表明dom没有返回树:
cacheRefEls: function(el) {
el = el || this.el;
var cache = null;
try{
cache = Ext.cache,
El = Ext.dom.Element,
dom = el.isElement ? el.dom : el,
refs = dom.querySelectorAll('[data-ref]'),
len = refs.length,
ref, i;
//console.log("Success: 'Nodelist' returned by 'el.dom.querySelectorAll('[data-ref]')' for el--->"+el + " 'cache-variable is set!'");
}catch(err){
//console.log("Error: No 'Nodelist' returned by 'el.dom.querySelectorAll('[data-ref]')' for el--->"+el + " 'Couldn't set cache-variable!'");
}
for (i = 0; i < len; i++) {
ref = refs[i];
if (!cache[ref.id]) {
new El(ref);
}
}
}
这样可以避免 el 访问没有这样树的 el ,例如文字 - 对象。
P.S。:谨慎使用此修复程序,因为它使用Sencha提供的本机代码。