HI, 我试图动态地将表单添加到Ext-js中的选项卡。 (标签已经被渲染)。 fyi,我正在使用我使用Ext 2.2。
在tab.add函数期间发生错误: 即:
function tabactivate(tab) {
var newItem= new Ext.FormPanel(.....);
**tab.add(newItem)**; //ERRORS HERE
tab.doLayout();
}
我在ext-all-debug.js的第247行收到此错误
range = el.ownerDocument.createRange();
错误是(Object不支持此属性或方法。)
这在Firefox中运行良好但在IE8中中断。 有没有人知道这方面的解决方法?
由于
答案 0 :(得分:0)
这听起来与ExtJS 2.2和IE的问题非常类似。
在Ext代码中有很多地方可以看到这样的代码:
var td = document.createElement("td");
this.tr.insertBefore(td, this.tr.childNodes[index]);
实际上,这对IE不起作用,因为“this.tr.childNodes([0])”尚不存在。
我的解决方法是覆盖原型(在我的案例中,在Ext.Toolbar中的insertButton())来检查this.tr.childNodes([0])的存在,使用不同的函数或创建它,如果它没有'存在。
我希望我说的是你遇到的问题。
答案 1 :(得分:0)
所以我找到了一个旧的字符串,为我提供了解决方案。 http://www.extjs.com/forum/showthread.php?t=7912&highlight=createRange
基本上,当我实例化空标签时,我将我的html属性设置为:
html: ' '
,
一旦我完全取出房产或我改为
html: '<span></span>'
它停止了破碎。
由于
答案 2 :(得分:0)
IE(甚至8)不支持document.createRange()
方法。
您可以尝试var supportsDOMRanges = document.implementation.hasFeature("Range", "2.0");
查看浏览器是否支持符合标准的DOM范围。