XUL如何在菜单按钮中从菜单中分离按钮

时间:2013-09-17 10:49:10

标签: javascript firefox menu firefox-addon xul

我正在使用XUL开发一个Firefox插件,我有以下内容:

<toolbarpalette id="BrowserToolbarPalette">
    <toolbarbutton id="MYBUTTON_ID" type="menu-button" class="toolbarbutton-1" label="Menu" tooltiptext="Menu" oncommand="checkLogin();" popup="login-popup">
        <menupopup id="mymenu">
            <menuitem label="Menu 1" oncommand="toDo(); event.stopPropagation();"/>
            <menuitem label="Menu 2" oncommand="toDo(); event.stopPropagation();"/>
            <menuitem label="Menu 3" oncommand="toDo(); event.stopPropagation();"/>
        </menupopup>
    </toolbarbutton>
</toolbarpalette>
<popupset>
    <panel id="login-popup" backdrag="true" type="arrow" noautohide="false">
        <vbox flex="1">
            <hbox flex="1">
                <label control="user-label" width="60px" value="Username:"/>
                <textbox id="user"/>
            </hbox>
            <hbox flex="1">
                <label control="pwd-label" width="60px" value="Password:"/>
                <textbox id="pwd"  type="password"/>
            </hbox>
            <hbox>
                <checkbox label="Ricordami" checked="false"/>
            </hbox>
            <hbox flex="1">
                <spacer flex="1"/>
                <button id="pwd" width="30px" label="Login"/>
            </hbox>
        </vbox>
    </panel>
</popupset>

现在,当我点击菜单按钮的“按钮”部分时,我正确地获得了登录弹出窗口,但如果我点击箭头(“菜单”部分),它会显示menupopup和menupopup背后的登录弹出窗口因为我认为当我点击箭头时“弹出”事件也会被触发,但我只想要显示menupopup。怎么达到这个?我是XUL开发的新手。

1 个答案:

答案 0 :(得分:0)

单个popup不能有两个button(虽然技术上不止一个)。

  1. 删除popup=属性。
  2. 来自oncommand
  3. Show the popup

    document.getElementById("login-popup")
      .openPopup(event.originalTarget, 
                 "after_start",
                  0, 0,
                  false, true,
                  event);
    
  4. 您可能必须先检查.originalTarget是否不是menuitem,以免在点击此popup时触发menuitem
  5. 除了之外:请在覆盖和覆盖脚本中使用足够独特的DOM ID /类和唯一足够的变量/函数名称,以避免与其他加载项或浏览器本身发生冲突。请参阅:JavaScript Object Management