代码之家  ›  专栏  ›  技术社区  ›  machineghost

XUL:如何在statusbarpanel中创建嵌套的menupopup(带有statusbarpanel菜单图标)

xul
  •  2
  • machineghost  · 技术社区  · 14 年前

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

    <状态栏面板> 不允许 <menu> 孩子(好吧,它会允许的,但不会产生想要的效果)。

    *编辑* 因为我不能把这个贴在回复的评论中(也不能得到语法着色之类的东西),下面是最终对我有用的东西(谢谢Sathish!):

    <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开发人员来说,作为一个旁注:您真的应该消除“statusbarpanel中的menupopup”风格的弹出窗口。回答这个问题的样式同样易于学习/使用,显著地更强大,并且它依赖于可以与其他XUL元素一起使用的相同的弹出机制。整个“状态栏面板中的菜单”这只是一个混乱的、不需要的异常现象。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Sathish    14 年前

    试试这个:

    1. 创建一个弹出式元素,如下所示: <popup ... > <menu ... > <menupopup ... > <menuitem ... > </menupopup ... > </menu> </popup>

    2. id 属于 popup 元素到 oncontextmenu 属性或使用 onclick statusbarpanel 元素。