Firefox検索バーにdropmarkerを追加しようとしています。そのほとんどはXBLで実装された匿名コンテンツです。Firefoxアドオンで匿名コンテンツ(XBL)が期待通りに機能しないinsertBeforeを使用する
var dropmarker_hbox = document.createElement("hbox");
dropmarker_hbox.setAttribute("anonid", "searchhistory-dropmarker-container");
dropmarker_hbox.setAttribute("class", "searchhistory-dropmarker-container");
var searchbar = document.getElementById("searchbar");
var textbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox");
var hbox = document.getAnonymousElementByAttribute(textbox, "class", "autocomplete-textbox-container");
var go_hbox = document.getAnonymousElementByAttribute(searchbar, "class", "search-go-container");
textbox.insertBefore(dropmarker_hbox, go_hbox);
DOMインスペクタで見て結果:私は以下のコードである検索バーの匿名の子コンテンツのうち、HBoxコンテナを、追加することによって開始したいXUL Structure
をだから私は二つの問題が生じています。まず、私の "searchhistory-dropmarker-container"をFirefoxの "search-go-container"の直前に表示したいが、insertBeforeが期待通りに動作しないようにする。
第2の問題は、「searchbar-textbox」ではなく「autocomplete-textbox-container」にコンテナを追加する必要があるということです。しかしそれによって、insertBeforeで例外が見つからないオブジェクトが発生し、appendChildで暗黙に失敗します。
なぜ "オートコンプリートテキストボックスコンテナ"にオブジェクトを追加できないのですか? 「searchhistory-dropmarker-container」を「search-go-container」の直前に配置するにはどうすればよいですか?私は、 "search-go-container"が "searchbar-textbox"の直接の子ではないため、insertBeforeが期待どおりに動作していないと推測しています。