我正在开发一个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。
答案 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
不起作用,则为每个项目创建课程。
希望这会有所帮助。