2012-12-09 14 views
1

我有一個我正在處理的側邊欄擴展。我遇到的問題是,當側邊欄打開時,它會經歷一些初始化。這需要填充一個列表。我有一個對象,它具有以下某些功能:XUL listbox.insertItemAt在多次打開和關閉後失敗

var intializeSidear = { 
initSidebar: function(){ 
var listbox_to_init = document.getElementById('generic-list-box'); 
for(var i = 0; i < 10; i++){ 
listbox_to_init.appendItem("Test", i); 
} 
} 
.... 

會發生什麼情況是我第一次打開邊欄時,一切正常。下一次我打開它,它會給出錯誤,「listbox_to_init.appendItem不是一個函數。」 (我把它放在try/catch塊中)。

有什麼理由可能會發生這種情況嗎?

回答

0

看來,爲了這個正確觸發,事件偵聽器需要綁在窗口加載事件:

window.addEventListener("load", function load(event){ 
window.removeEventListener("load", load, false); //remove listener, no longer needed 
    init(); 
},false); 

我不確定這是爲什麼雖然。當我警告從列表框中的document.getElementById()中檢索到的變量時,它將它顯示爲一個[Xul對象],它是。那麼爲什麼可以做出這樣的決定,但爲了實際操縱我需要等待窗口加載的xul對象呢?

如果任何人有解釋提供,那將是盛大的。與此同時,如果我的代碼仍然存在問題,或者沒有其他人回答我的新問題,我會嘗試研究並返回。