Firefox XUL菜单列表在单击时重新加载面板

Firefox XUL菜单列表在单击时重新加载面板,firefox,firefox-addon,xul,Firefox,Firefox Addon,Xul,我在firefox扩展的面板内的iframe中添加了menulist的示例 <menulist> <menupopup> <menuitem label="option 1" value="1"/> <menuitem label="option 2" value="2"/> <menuitem label="option 3" value="3"/> <menuitem label="opti

我在firefox扩展的面板内的iframe中添加了menulist的示例

<menulist>
  <menupopup>
    <menuitem label="option 1" value="1"/>
    <menuitem label="option 2" value="2"/>
    <menuitem label="option 3" value="3"/>
    <menuitem label="option 4" value="4"/>
  </menupopup>
</menulist>

但当我单击它时,iframe会重新加载。我必须做些什么才能让它停止重新加载

--编辑:

我创建了一个简单的xul文件,并放入了上面的代码,它的工作原理与预期一致,因此问题出在我周围的代码中

这是一个内部带有iframe的面板,我在单击按钮时打开该面板:

<button id="bannerLeftOffers"
        class="leftIconsImage"
        type="panel">
    <panel id="offers-panel"
           type="arrow"
           noautofocus="true"
           consumeoutsideclicks="false"
           noautohide="true"
           onpopupshowing="offer.start();">
        <hbox id="offers-panel-container" align="top">
            <iframe id="offers-iframe" flex="1"/>
        </hbox>
    </panel>
</button>


每当我单击菜单列表时,都会调用函数“offer.start();”,但我没有对该函数的任何其他调用,只是在弹出窗口的面板上,因此我猜菜单列表上的某个事件可能会触发重新加载,但我不知道它是什么。

我通过以下方法修复了此问题:

添加

offer.open = false
然后在OnPopusShowing函数“start”上添加:

然后向onpopuphiding添加一个函数,再次将变量设置为false

这样面板就不会重新加载,菜单列表也会按预期工作

--编辑:

事实证明它并不能完全解决问题。 我可以单击菜单列表,它会显示选项(我以前看不到),但如果我再次单击它,面板会隐藏并再次显示,使此解决方案无效

--编辑2:

我想我找到了另一个解决办法

我正在检查触发offers.start(事件)的explicitOriginalTarget.id是否为offers面板。如果是,我加载面板。否则我什么也不做


我不确定是什么触发了面板/iframe的重新加载,但这修复了这种行为

请发布您的xul文件。这是一个巨大的文件,我认为不会有多大帮助。我将在主要问题中添加我收集的一些信息。
if (offer.open == false) 
...
Load popup content
offer.open = true;