Изображение меню расширения Firefox не отображается - PullRequest
2 голосов
/ 17 сентября 2011

Я работаю над расширением Firefox, которое создает меню закладок из данных, полученных с сервера.Я хотел бы добавить значки к каждому пункту меню, но я не могу заставить их отображаться.Я создаю каждый пункт меню, используя:

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;
};

Элемент меню работает просто отлично, за исключением того, что не отображает изображение.Я проверил URL-адреса, которые я получаю для каждого изображения (из item.favicon в приведенном ниже коде), которые доступны.Я использую Firefox 6.0.2.

1 Ответ

1 голос
/ 18 сентября 2011

Я выбрал случайное расширение, которое имеет значки в пунктах меню - 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 - URL), или если style не работает, то создайте классы для каждого элемента.Надеюсь, это поможет.

...