如何在Javascript中响应鼠标按钮点击?

时间:2010-10-03 16:01:41

标签: javascript jquery

我希望能够编写代码来(单独)响应以下事件:

  1. 右键单击
  2. 左键单击
  3. 点击中间按钮(可选 - 很高兴但没有这个我可以活下去。)
  4. Javascript中是否有内置的方法可以响应这些事件,还是需要使用库(最好是jQuery)?

4 个答案:

答案 0 :(得分:3)

Quirks模式有a decent guide,它更复杂,需要由于浏览器的差异。

  

我需要使用库(最好是jQuery)吗?

JavaScript库无法做任何你自己无法做到的事情;他们只是更容易做一些事情。

答案 1 :(得分:1)

$('#your_element').mousedown(function(event) {
    switch (event.which)
    {
        case 1:
            // left mouse
            break;
        case 2:
            // middle mouse
            break;
        case 3:
            // right mouse
            break;
        default:
            // some sort of bizarre mouse! fallback
            break;
    }
});

答案 2 :(得分:1)

这是我使用的功能:

var ieButtons = { "1": "left", "2": "right", "3": "leftright", "4": "middle" };

function getMouseButton(evt) {
    if (typeof evt.which == "number") {
        // Non-IE case. Works in everything apart from Opera < 8
        return (evt.which < 2) ? "left" :
            ( (evt.which == 2) ? "middle" : "right" );
    } else {
        // IE case
        return ieButtons[evt.button] || "unknown";
    }
}

document.onmousedown = function(evt) {
    evt = evt || window.event;
    window.alert( getMouseButton(evt) );
};

Jan Wolter关于鼠标事件的文章似乎不如他在关键事件上的知名度高,但同样出色,并将quirksmode敲入一个竖起的帽子:http://unixpapa.com/js/mouse.html

刚刚查看了jQuery代码,它看起来好像正确地规范了事件的which属性(左边1个,中间2个,右边3个),虽然没有IE报告多个的好功能同时按下按钮。

答案 3 :(得分:-1)

来自MSDN的

onclick event 来自MSDN:button property