我有一个使用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,甚至不能为每个工具栏添加一个空按钮({})。对任何可以解决这个问题的人都表示赞赏。
答案 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 ()如果它不存在。