Firefox XUL菜单列表在单击时重新加载面板
我在firefox扩展的面板内的iframe中添加了menulist的示例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
<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;