Firefox扩展菜单项图像不显示

时间:2011-09-17 12:38:08

标签: image firefox-addon xul 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)。

知道这里有什么问题吗?我正在使用Firefox 6.0.2。

1 个答案:

答案 0 :(得分:1)

我选择了随机扩展程序,其中包含菜单项中的图标 - HttpFox - 并且您有类似这样的内容:

在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属性,则可以更改

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

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

(如果item.favicon是网址),或者如果style不起作用,则为每个项目创建课程。 希望这会有所帮助。