XUL:点击自定义状态栏,如何左右隔离

时间:2011-03-29 13:54:30

标签: firefox firefox-addon xul right-click

我开发了一个firefox插件,状态栏上有一个简单的按钮。现在我希望得到正确的和左键单击。

Mi代码如下所示

<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之前触发了左键单击。

有没有办法让我隔离右键和左键?左键单击时触发左键单击,右键单击时右键单击。

由于

1 个答案:

答案 0 :(得分: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();"/>