2013-08-31 14 views
1

我有一個toolbarbutton,單擊時顯示一個面板。當我點擊右鍵,我發現了以下內容:顯示在toolbarbutton的xul面板內的工具欄上下文菜單

unwanted context menu

這是相同的上下文菜單,顯示當我主工具欄,甚至toolbarbuttons點擊。

的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> 

如何從傳遞到面板制止這種行爲的任何想法?

回答

2

在面板上添加一個click事件監聽器,.preventDefault()和/或.stopPropagation()應該這樣做,如果內存正確運行。

另一種方法是根本不使用type="panel"按鈕,將面板放在其他位置(一個彈出菜單)並使用.openPopup()從js打開面板。爲了讓按鈕狀態正確,當顯示彈出窗口時需要執行button.open = true,並且一旦它被再次隱藏(至少這是下載指示器按鈕的作用)就會恢復。

+0

嗨@nmaier。謝謝回答。我嘗試過在面板上和工具欄上按鈕,但它總是會阻止文本框上的右鍵單擊菜單(複製,粘貼等)。我想避免這種情況。 –

+0

只有在'.originalTarget === panel'時才能防止事件發生? – nmaier

+0

對一堆事物(面板,標籤,間隔符,圖像,盒子等)進行驗證後,這很可能會奏效,但我試圖找出是否有更「本機」的方式來防止這種情況。 –

0

​​

其中

signage.emptyFn: function (event) { 
    event.preventDefault(); 
    //event.stopPropagation(); 
}, 

而且工作得很好!

相關問題