Firefox addon 嵌套弹出窗口,弹出窗口显示事件出现问题
我正在开发一个Firefox扩展,我有一个工具栏按钮,显示一个覆盖图,其中我在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">
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()
。另一个选择应该是看这个问题