javascript - 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">
        <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 开发新手。

最佳答案

单个 button 不能有两个 popup(尽管从技术上讲不止一个)。

  1. 删除 popup= 属性。
  2. Show the popup从你的oncommand:

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

旁白:请在您的覆盖和覆盖脚本中使用足够唯一的 DOM id/类和足够唯一的变量/函数名称,以避免与其他附加组件或浏览器本身发生冲突。请参阅:JavaScript Object Management

关于javascript - XUL 如何在菜单按钮中将按钮与菜单分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847822/

相关文章:

java - 显示菜单编译错误

javascript - 使用 Firefox 发送的 POST 请求中的字符编码问题

jquery - CSS 菜单和 JQuery

css - 在 IE 中对齐 css 菜单

javascript - 使用 Chosen 插件将 html 下拉列表修改为可搜索下拉列表

javascript - 在 firefox 中使用 js 动态最大高度

javascript - 如何识别 Firefox 中的 http 请求是谁发起的?

javascript - aJax REST API 调用 - Curl 在 aJax 失败时工作

javascript - 这个 QuickSort 实现有什么问题?

javascript - 读取 Google Sheets 中的数据并将数据传递到自定义下拉菜单