0

我有一个使用 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: " "; }

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

4

4 回答 4

2

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

酒吧:[]

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

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

于 2009-02-06T19:27:37.053 回答
1

如果您所做的只是添加到一个空面板

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

或者

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

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

于 2008-11-25T02:16:56.267 回答
1

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

myPanel.on('render', function() {
   this.getTopToolbar().insertButton(0, [...array of buttons...]);
}, true);
于 2009-01-27T04:50:04.980 回答
0

我不认为有一个纯 CSS 的解决方案。

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

于 2008-12-04T18:43:15.387 回答