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

发布于 2024-10-27 21:18:15 字数 652 浏览 4 评论 0原文

我开发了一个火狐插件,状态栏上有一个简单的按钮。现在我想获得右键和左键单击。

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

有什么方法可以让我隔离右键和左键单击吗?左键单击时触发左键单击,右键单击时触发右键单击。

谢谢

i've developed a firefox addon with a simple button on the status bar. Now i want to get the right and the left click.

Mi code look like this below

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

Right click on test label open the menu popup.
It seems working, but the left click is triggered before the right click on the label TEST.

Is there any way that provide me isolating the right and the left click? Triggering left click when left click occours and right click when right click occurs.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自由如风 2024-11-03 21:18:15

您应该创建自定义事件处理程序,而不仅仅是内联警报调用,并且在该处理程序内,您可以识别按下了哪个按钮:

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();"/>

You should create custom event handler, not just inline alert call, and inside that handler, you can recognize which button was pressed:

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>

Also, to prevent appearing of context menu you can use oncontextmenu event handler:

<menuitem label="test" onclick="whichButton(event);" type="checkbox" oncontextmenu="event.preventDefault();"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文