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()から取得した変数にアラートを送信すると、[XulObject]であることが示されました。では、なぜそれがその決定を下すことができるのでしょうか、しかし実際にxulオブジェクトを操作するために、ウィンドウがロードされるのを待つ必要がありましたか?

誰かが提供する説明があれば、それは壮大でしょう。それまでの間、コードにまだ問題がある場合、または他の誰も私の新しい質問に答えていない場合は、調査してここに戻ってみます。

于 2012-12-09T03:45:59.013 に答える