2008-11-24 68 views
0

我有一个使用Ext-JS 2.2的Web应用程序。在一定的分量,我们有我们正尝试将按钮添加到使用需要一个ExtJS错误解决方法

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

然而,在IE6/7失败的原因是在内线,全debug.js行20241-20242的空栏:

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

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

真正的问题: 我可以使用类似于CSS的以下的儿童添加到每个工具栏<TR>使this.tr.childNodes [0]发现:

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

我完全明白这是一种黑客攻击,但出于法律原因,我无法更改任何Javascript,甚至不会为每个工具栏添加一个空按钮({})。主要的荣誉给任何人可以解决这个问题。

回答

0

我没想到有一个纯CSS的解决方案。

为了记录,我最终将JavaScript注入到页面,该页面覆盖了用于insertButton()函数的Ext.Toolbar原型,以检查“this.tr.childNodes([0])”的存在并且默认为addButton()如果它不存在。

1

如果你正在做的是增加了一个空的面板

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

或者

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

要么应该工作。它看起来像insertButton的目的是为了在非空的工具栏中放置一个按钮。

+0

不应该insertButtons优雅地回落到addButtons的情况下没有?我认为我们必须认为这是ExtJs中的一个小错误... – Thevs 2008-12-03 21:57:11

1

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

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

谢谢,但问题不是时机。原来,只有在工具栏中有东西的情况下,insertButton函数才起作用。 – 2009-01-29 17:00:05

2

什么我已经在过去做的是包括在我的元素配置一个空的工具栏:

TBAR:[]

然后(且只有一个元素之后已完全呈现)使用.add()方法注入按钮。

事件的顺序会让你每一次。需要一段时间才能掌握它。

相关问题