簡體   English   中英

如何響應Javascript中的鼠標單擊?

[英]How to respond to mouse button clicks in Javascript?

我希望能夠編寫代碼以(分別)響應以下事件:

  1. 右擊
  2. 左手點擊
  3. 單擊中鍵(可選-非常高興,但我可以沒有這個)。

Javascript中是否有一種我可以響應這些事件的內置方法,還是需要使用一個庫(最好是jQuery)?

Quirks模式有一個不錯的指南 ,由於瀏覽器的不同,它會更復雜。

我需要使用一個庫(最好是jQuery)嗎?

JavaScript庫無法做您無法做的任何事; 他們只是使一些事情變得更容易。

$('#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;
    }
});

這是我使用的功能:

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的好功能,它可以報告多個同時按下的按鈕。

來自MSDN:來自MSDN的onclick事件按鈕屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM