IE 8中的ext js - el.ownerDocument.createRange()错误

时间:2009-12-13 16:03:01

标签: javascript extjs extjs2

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中中断。 有没有人知道这方面的解决方法?

由于

3 个答案:

答案 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范围。