2011-03-29 89 views
2

我開發了一個Firefox狀態欄上的簡單按鈕的Firefox插件。現在我想獲得正確的和左鍵單擊。XUL:點擊自定義狀態欄,如何隔離右側和左側

彌代碼看起來象下面

<popupset> 
    <menupopup id="intransContextMenu" position="overlap"> 
     <menuitem label="settings" onclick="alert('test');" type="checkbox"/> 
     <menuitem label="test" onclick="alert('test nr 2');" type="checkbox"/> 
    </menupopup> 
</popupset> 

<statusbar id="status-bar"> 
    <statusbarpanel id="2" label="test" tooltip="savetip" context="intransContextMenu"/> 
</statusbar> 

右擊測試標籤上打開彈出菜單。 它似乎工作,但左鍵單擊是在標籤TEST右鍵單擊之前觸發的。

有沒有什麼辦法可以讓我隔離右鍵和左鍵?當鼠標左鍵點擊時觸發左鍵單擊,右鍵單擊時右鍵單擊。

感謝

+0

你應該避免測試左鍵單擊XUL元素,而不是使用'oncommand',因爲這也會捕獲鍵盤訪問。 (您仍然需要點擊處理程序來測試其他點擊。) – Neil 2011-03-30 20:36:55

回答

5

您應該創建自定義事件處理程序,不只是內聯警報電話,以及處理程序中,您可以識別哪個按鈕被按下:

function whichButton(e) 
{ 
    var btnCode = e.button; 

    switch (btnCode){ 
     case 0 : alert('Left button clicked'); 
       break; 
     case 1 : alert('Middle button clicked'); 
       break; 
     case 2 : alert('Right button clicked'); 
       break; 
     default : alert('Unexpected code: ' + btnCode); 
    } 
} 

<popupset> 
    <menupopup id="intransContextMenu" position="overlap"> 
     <menuitem label="settings" onclick="alert('test');" type="checkbox"/> 
     <menuitem label="test" onclick="whichButton(event);" type="checkbox"/> 
    </menupopup> 
</popupset> 

另外,爲了防止出現上下文菜單你可以使用oncontextmenu事件處理程序:

<menuitem label="test" onclick="whichButton(event);" type="checkbox" oncontextmenu="event.preventDefault();"/> 
相關問題