Firefox 工具栏上下文菜单显示内部工具栏按钮';s xul面板

Firefox 工具栏上下文菜单显示内部工具栏按钮';s xul面板,firefox,firefox-addon,xul,Firefox,Firefox Addon,Xul,我有一个工具栏按钮,当单击它时,会显示一个面板。当我右键单击面板时,会看到以下内容: 这与单击主工具栏甚至工具栏按钮时显示的上下文菜单相同 xul是: <toolbarpalette id="BrowserToolbarPalette"> <toolbarbutton id="testToolbarIcon" image="chrome://myext/content/images/aicon.png" type="panel"

我有一个
工具栏按钮
,当单击它时,会显示一个面板。当我右键单击面板时,会看到以下内容:

这与单击主工具栏甚至工具栏按钮时显示的上下文菜单相同

xul是:

<toolbarpalette id="BrowserToolbarPalette">
  <toolbarbutton id="testToolbarIcon"
           image="chrome://myext/content/images/aicon.png"
           type="panel"
           class="toolbarbutton-1 chromeclass-toolbar-additional">
    <panel id="testPanel"
         type="arrow"
         level="parent">
      <vbox id="testbox" align="top" width="200" height="200">
        <label value="Test Label" />
        <textbox></textbox>
      </vbox>
    </panel>
  </toolbarbutton>        
</toolbarpalette>


有没有关于如何阻止这种行为传递到面板的想法?

在面板中添加一个
单击
事件侦听器,并且/或者如果内存正常,应该这样做

另一种方法是不使用
type=“panel”
按钮,将面板放在其他地方(popupper),然后使用
.openPopup()
从js打开面板。要使按钮状态正确,需要在弹出窗口显示时执行
button.open=true
,并在再次隐藏后恢复该状态(至少下载指示按钮就是这样做的)。

<toolbarbutton id="search-button" label="Search" type="panel" oncommand="signage.onMenuItemCommand(event);" onclick="signage.emptyFn(event);" ondblclick="signage.emptyFn(event);"></toolbarbutton>

而且效果很好

你好@nmaier。谢谢你的回答。我在面板和工具栏按钮上试过,但它总是阻止文本框上的右键单击上下文菜单(复制、粘贴等)。我想避免这种情况。只有在
.originalTarget===panel
的情况下才能防止事件发生?在对一系列内容(面板、标签、间隔符、图像、框等)进行验证后,这可能会起作用,但我试图找出是否有更“本机”的方法来防止这种情况发生。嗯,我想您可以将其作为常规工具栏按钮,将面板放在弹出窗口中,而不是按钮的子对象,然后通过
.openPanel(…)
从js打开面板。唯一其他常规面板按钮,下载按钮,不是
type=“panel”
本身…是的。我也试过这样做,它看起来真的是我最好的选择。我唯一缺少的是如何在单击按钮时将其设置为选中按钮的样式(请参阅以了解区别。您知道如何复制它吗?
signage.emptyFn: function (event) {
    event.preventDefault();
    //event.stopPropagation();
},