我正在开发一个 Firefox 扩展,我有一个工具栏按钮,它显示一个覆盖层,我在其中放置了一些 XUL 代码ToolbarDisplayManager
:
<overlay id="custombutton-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="boycottToolbarButton" label="Label" tooltiptext="Label" type="menu" popup="ToolbarPopup" />
</toolbarpalette>
<popupset>
<panel id="ToolbarPopup" position="after_start" onpopupshowing="Refresh();">
<vbox class="ToolbarBody">
<box id="ToolbarDisplayManager" />
</vbox>
</panel>
</popupset>
</overlay>
在“ToolbarDisplayManager”中,我创建了一个带有带有 javascript 的 menupopup 的菜单列表(如“组合框”),其结构如下:
<menulist id="combo">
<menupopup>
<menuitem>
<menuitem>
...
</menupopup>
</menulist>
这就是问题所在:当我单击时,我会在事件ToolbarPopup
中运行“刷新”功能。popupshowing
但是当显示覆盖时,我点击“组合”来选择一个项目,再次触发popupshowing
事件。ToolbarPopup
换句话说:这就像两个“弹出窗口”互相有麻烦。
我需要在显示叠加层之前运行“刷新”功能。我的结构在某处有问题吗?如何处理两个嵌套的弹出窗口及其popupshowing
事件?