0

嗨,我正在尝试将表单动态添加到 Ext-js 中的选项卡。(选项卡已经呈现)。仅供参考,我正在使用我正在使用 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();

错误是(对象不支持此属性或方法。)

这在 Firefox 中运行良好,但在 IE8 中中断。有谁知道这个的解决方法?

谢谢

4

3 回答 3

0

所以我找到了一个旧字符串,它可以为我解决问题。 http://www.extjs.com/forum/showthread.php?t=7912&highlight=createRange

本质上,当我实例化空选项卡时,我将我的 html 属性设置为:

html: ' ',

一旦我要么完全取出财产,要么我改为

html: '<span></span>'

它停止破裂。

谢谢

于 2009-12-14T17:24:01.863 回答
0

IE(甚至 8)不支持该document.createRange()方法。

您可以尝试var supportsDOMRanges = document.implementation.hasFeature("Range", "2.0");查看浏览器是否支持符合标准的 DOM 范围。

于 2010-07-29T06:56:55.090 回答
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]) 的存在,使用不同的函数或在它不存在时创建它。

我希望我是正确的,这是您遇到的问题。

于 2009-12-13T16:29:07.977 回答