1

我正在开发一个侧边栏扩展。我遇到的问题是,当打开那个侧边栏时,它会进行一些初始化。这需要填充一个列表。我有一个对象,它具有以下一些功能:

 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 块中)。

为什么会发生这种情况有什么原因吗?

4

1 回答 1

0

看来,为了使其正确触发,需要将事件侦听器绑定到窗口加载事件:

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

我不确定为什么会这样。当我警告我从列表框上的 document.getElementById() 检索到的变量时,它显示它是一个 [Xul 对象],它就是。那么为什么它会做出这样的决定,但为了实际操作 xul 对象,我需要等待窗口加载?

如果有人能提供解释,那就太好了。同时,如果我的代码仍然存在问题或没有其他人回答我的新问题,我将尝试研究并返回这里。

于 2012-12-09T03:45:59.013 回答