В XUL вы можете создать иконку панели состояния, похожую на ту, что используется в Firebug и Greasemonkey, с тегом <statusbarpanel>
. Если вы установите правильный класс, вы можете бросить <menupop>
внутрь, а затем иметь всплывающее меню, когда пользователь нажимает на значок, например, так ...
<statusbarpanel class="statusbarpanel-menu-iconic"
src="chrome://YourExtension/content/icon.png">
<menupopup>
<menuitem label="whatever" oncommand="doSomething();">
<menuitem label="whatever else" oncommand="doSomethingElse();">
</menupopup>
</statusbarpanel>
Теперь, с другими всплывающими меню, вы можете вкладывать серии меню, используя тег меню:
<statusbarpanel class="statusbarpanel-menu-iconic"
src="chrome://YourExtension/content/icon.png">
<menu value="Old">
<menupopup>
<menuitem label="whatever" oncommand="doSomething();">
<menuitem label="whatever else" oncommand="doSomethingElse();">
</menupopup>
</menu>
<menu value="New>
<menupopup>
<menuitem label="yet another" oncommand="doYetAnotherSomething();">
</menupopup>
</menu>
</statusbarpanel>
, но приведенный выше код на самом деле не работает, потому что <statusbarpanel>
не позволит <menu>
дочернему элементу (ну, это разрешит, но не создаст желаемый эффект).
Итак, что меня интересовало, так это ... можно ли как-нибудь создать меню, вызываемое иконкой панели состояния, с несколькими слоями пунктов меню?
* РЕДАКТИРОВАТЬ *
Поскольку я не могу опубликовать это в комментарии к ответу (и получить синтаксическую раскраску и тому подобное), вот что в итоге сработало для меня (спасибо, Сатиш!):
<statusbarpanel class="statusbarpanel-menu-iconic"
src="chrome://YourExtension/content/icon.png" popup="stausBarPanelMenu">
</statusbarpanel>
<popup id="statusBarPanelMenu" position="start_before">
<menu value="Old">
<menupopup>
<menuitem label="whatever" oncommand="doSomething();">
<menuitem label="whatever else" oncommand="doSomethingElse();">
</menupopup>
</menu>
<menu value="New>
<menupopup>
<menuitem label="yet another" oncommand="doYetAnotherSomething();">
</menupopup>
</menu>
</popop>
Да, и как примечание для всех разработчиков XUL, которые могли бы прочитать это: вам действительно следует исключить всплывающее окно в стиле «menupopup in statusbarpanel». Стиль, который ответил на этот вопрос, так же прост в изучении / использовании, значительно более мощный и основан на тех же механизмах всплывающих окон, которые можно использовать с другими элементами XUL. Весь этот «менупопуп внутри статусбарпана» - это просто запутанная, ненужная аномалия.