2011-03-29 70 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();"/>