2008-11-24 67 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()方法注入按鈕。

事件的順序會讓你每一次。需要一段時間才能掌握它。