在javascript中点击了鼠标按钮?

时间:2012-04-03 17:33:08

标签: javascript

让我说我有

  <div onmouseup="myfunction()">
  </div>

但是如果点击鼠标左键或右键怎么知道呢?

3 个答案:

答案 0 :(得分:3)

有两个属性可以找出点击了哪个鼠标按钮:whichbutton。请注意,这些属性并不总是适用于单击事件。要安全地检测鼠标按钮,您必须使用mousedown或mouseup事件。

which是旧的Netscape属性。这将为鼠标按钮提供以下值。

Left button - 1
Middle button - 2
Right Button - 3

没有问题,除了它微薄的支持(以及它也用于密钥检测的事实)。

现在按钮已被犯规超出所有认可。根据W3C,它的值应该是:

Left button – 0
Middle button – 1
Right button – 2

根据微软的说法,它的价值应该是:

Left button – 1
Middle button – 4
Right button – 2

毫无疑问,微软的模式比W3C更好。 0应该表示“没有按下按钮”,其他任何东西都是不合逻辑的。

此外,只有在Microsoft模型中才能组合按钮值,因此5表示“左侧和中间按钮”。甚至Explorer 6实际上还没有支持这个,但是在W3C模型中这样的组合在理论上是不可能的:你永远不知道左键是否也被点击了。

要检查点击了哪种类型的按钮,请始终使用whichbutton属性的功能检测

if (e.which) {
   // old netsapce implementation
   consoel.log((e.which == 3) + ' right click');
} else if (e.button) {
   // for microsoft or W3C model implementation
   consoel.log((e.button == 2) + ' right click');
}

<强>参考:

http://www.quirksmode.org/js/events_properties.html

答案 1 :(得分:0)

检查此功能:

function getEvt (evt) {
    var mouseEvt = (evt).which;
    var mMouseEvt = evt.button;
    console.log(mouseEvt);
    console.log(mMouseEvt);
}

返回int。例如,左键单击:

1      listeners.js (line 43)
0      listeners.js (line 44)

答案 2 :(得分:-1)

function doSomething(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert('Rightclick: ' + rightclick); // true or false
}