2011-09-17 21 views
2

私は、サーバーからフェッチされたデータからブックマークメニューを作成するFirefox拡張機能を開発中です。私は各menuitemにアイコンを追加したいと思いますが、それらを表示させることはできません。Firefox拡張機能Menuitem画像が表示されない

Bookmarks.createMenuItem = function(item) { 
    var menuItem = document.createElementNS(Bookmarks.XUL_NS, "menuitem"); 
    menuItem.setAttribute("label", item.url_title); 
    menuItem.setAttribute("oncommand", "Bookmarks.openUrl('" + item.url + "');"); 
    menuItem.setAttribute("class", "bookmark-menu-item"); 
    if (item.favicon) { 
      menuItem.setAttribute("class", menuItem.getAttribute("class") + 
            " menuitem-iconic"); 
      menuItem.setAttribute("image", item.favicon); 
    } 

    return menuItem; 
}; 

menuitemはイメージを表示しない以外は問題ありません。私は各画像(以下のコードのitem.faviconから)にアクセスしているURLにアクセス可能であることを確認しました。

任意のアイデアは、ここで間違って何ですか?私はFirefox 6.0.2を使用しています。 HttpFox - -

+0

Webから外部サーバーから画像をオンザフライでフェッチしていますか?はいの場合、これがセキュリティ上の理由で許可されているかどうかはわかりません。たぶんbase64でエンコードされた文字列としてローカルに格納してみてください(これは単なる推測です)。 –

+0

私の拡張機能のコンテンツディレクトリに16x16のicon.pngを入れてから、「icon.png」、「content/icon.png」、「bookmarks/content/icon.png」、「chrome ://bookmarks/content/icon.png "私はsetAttribute()を使う代わりにmenuItem.imageで設定しようとしました。それのどれもうまくいかなかった。画像属性がmenuitemに設定されていることと、「menuitem-iconic」クラスがあることを確認するためにいくつかの警告を出しました。 – erturne

+0

率直に言えば、私はここにあなたのコードに間違ったことはありません。 'menuitem-iconic'クラスと' image'属性を設定することは間違いなく私の仕事です。 –

答えて

1

私は、メニュー項目のアイコンを持っているランダムな拡張子を選んだし、そこにはこのようなものがあります:

XULファイル内:

<menupopup id="toolsPopup"> 
    <menu id="hf_menu_HttpFox" 
     class="menu-iconic" 
     label="&browseroverlay.menutools.httpfox.label;" /> 
</menupopup> 

CSSファイル内:

#hf_appmenu_HttpFox, #hf_menu_HttpFox, #hf_menu_webDeveloper_HttpFox { 
    list-style-image: url(chrome://httpfox/skin/globe16.png); 
} 

FoxSplitterでも同じです。その後、

style属性は、メニューのために許可されているのであれば基本的に、あなたは(item.faviconがURLの場合)

menuItem.setAttribute("style", "list-style-image: url(" + item.favicon + ")"); 

menuItem.setAttribute("image", item.favicon); 

を変更することができ、またはstyleが動作しない場合は、各項目のクラスを作成します。 これが役立つことを願っています。

+0

'image'属性と' list-style-image' CSSプロパティは全く同じです。 –

関連する問題