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

Javascript XUL如何在菜单按钮中从菜单中分离按钮,javascript,firefox,menu,firefox-addon,xul,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">

我正在使用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>


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

一个
按钮不能有两个
弹出窗口(虽然技术上不止一个)

  • 删除
    popup=
    属性
  • 从命令的
    中:

    document.getElementById("login-popup")
      .openPopup(event.originalTarget, 
                 "after_start",
                  0, 0,
                  false, true,
                  event);
    
  • 您可能必须首先检查
    .originalTarget
    是否不是
    菜单项
    ,以避免在单击此类
    菜单项时触发
    弹出窗口

  • 旁白:请在覆盖和覆盖脚本中使用足够唯一的DOM ID/类和足够唯一的变量/函数名,以避免与其他加载项或浏览器本身发生冲突。请参阅:

    我没有看到为或记录的弹出属性。我想弹出窗口是通过
    checkLogin()
    显示的,弹出窗口是通过
    popup=“login popup”
    属性显示的,
    check\u login()
    是我制作的一个javascript函数,如果用户登录,它可以将我的图标从灰色切换为颜色。添加
    event.stopPropagation()
    菜单项的
    oncommand
    属性,如果您还没有设置它们(如本文所述),那么这对我来说是个好办法!它起作用了!谢谢这样我也可以改变我想显示的弹出窗口!