需要一个ExtJS错误解决方法

时间:2008-11-24 22:04:32

标签: javascript css extjs

我有一个使用Ext-JS 2.2的Web应用程序。在某个组件中,我们有一个空工具栏,我们正在尝试添加按钮以使用

myPanel.getTopToolbar().insertButton(0, [...array of buttons...]);

然而,在IE6 / 7中,由于ext-all-debug.js中的第20241-20242行而失败:

var td = document.createElement("td");
this.tr.insertBefore(td, this.tr.childNodes[index]);

由于IE中尚不存在“this.tr.childNodes([0])”,因此“参数无效”失败。

真实问题: 我是否可以使用类似于下面的CSS为每个工具栏添加一个子项< tr>这样就找到了this.tr.childNodes [0]:

div.x-toolbar tr:after { content: " "; }

我完全意识到这是一个黑客,但出于法律原因,我无法更改任何Javascript,甚至不能为每个工具栏添加一个空按钮({})。对任何可以解决这个问题的人都表示赞赏。

4 个答案:

答案 0 :(得分:2)

我过去必须做的是在我的元素配置中包含一个空工具栏:

TBAR:[]

然后(仅在元素完全渲染之后)使用.add()方法注入按钮。

活动顺序每次都会得到你。需要一段时间来处理它。

答案 1 :(得分:1)

如果您要做的只是添加到空面板

 myPanel.getTopToolbar().add(buttons etc);

 myPanel.getTopToolbar().addButton(..);

要么应该工作。看起来insertButton的目的是将按钮放在非空工具栏中。

答案 2 :(得分:1)

您是否考虑在渲染面板后添加按钮?也许是这样的:

myPanel.on('render', function() {
   this.getTopToolbar().insertButton(0, [...array of buttons...]);
}, true);

答案 3 :(得分:0)

我认为没有纯CSS解决方案。

为了记录,我最终在页面中注入了javascript,它覆盖了insert.Boolton()函数的Ext.Toolbar原型,以检查“this.tr.childNodes([0])”是否存在,默认为addButton ()如果它不存在。