我正在使用 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
(尽管从技术上讲不止一个)。
- 删除
popup=
属性。 Show the popup从你的
oncommand
:document.getElementById("login-popup") .openPopup(event.originalTarget, "after_start", 0, 0, false, true, event);
- 您可能必须首先检查
.originalTarget
不是menuitem
,以避免在单击此类时触发
。popup
>菜单项
旁白:请在您的覆盖和覆盖脚本中使用足够唯一的 DOM id/类和足够唯一的变量/函数名称,以避免与其他附加组件或浏览器本身发生冲突。请参阅:JavaScript Object Management
关于javascript - XUL 如何在菜单按钮中将按钮与菜单分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847822/