Firefox addon 嵌套弹出窗口,弹出窗口显示事件出现问题

Firefox addon 嵌套弹出窗口,弹出窗口显示事件出现问题,firefox-addon,dom-events,Firefox Addon,Dom Events,我正在开发一个Firefox扩展,我有一个工具栏按钮,显示一个覆盖图,其中我在ToolbarDisplayManager中放置了一些XUL代码: <overlay id="custombutton-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <toolbarpalette id="BrowserToolbarPalette">

我正在开发一个Firefox扩展,我有一个工具栏按钮,显示一个覆盖图,其中我在
ToolbarDisplayManager
中放置了一些XUL代码:

<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的菜单Opup(类似于“组合框”),其结构如下:

<menulist id="combo">
    <menupopup>
        <menuitem>
        <menuitem>
        ...
    </menupopup>
</menulist>

...
问题是: 单击
ToolbarPopup
时,我在
popushowing
事件中运行“刷新”功能。但是当显示覆盖时,我点击“组合”选择一个项目,
ToolbarPopup
popupshowing
事件再次被触发。 换句话说:这就像两个“弹出窗口”彼此有麻烦一样


我需要在显示覆盖之前运行“刷新”功能。我的结构有什么地方不对吗?如何处理两个嵌套的弹出窗口及其
popushowing
事件?

弹出的
popushowing
事件意味着它可以被DOM层次结构中比触发事件的元素更高的事件处理程序拦截。因此,事件处理程序首先从
元素接收
popushowing
事件,然后从
元素接收另一个事件(因为它位于
内部)。您可以使用以下选项轻松区分这两种情况:


这将确保您忽略冒泡的事件,并且仅对源自
本身的事件调用
Refresh()
。另一个选择应该是看这个问题