2012-04-03 52 views
1

讓我們說我有哪個鼠標按鈕在javascript中點擊了onmouseup?

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

但我怎麼會知道,如果被點擊鼠標左右鍵?

+2

有你搜尋它的第一? – wong2 2012-04-03 17:34:07

+0

嘗試尋找到'event.which'財產 – antyrat 2012-04-03 17:35:56

+0

http://stackoverflow.com/questions/1206203/how-to-distinguish-between-left-and-right-mouse-click-with-jquery – 2012-04-03 17:36:36

回答

-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 
} 
+0

可能[缺少來源](http://stackoverflow.com/a/8678019/908879) – ajax333221 2012-04-03 17:59:11

+0

好的選擇...你需要檢查我的答案在這裏... http: //stackoverflow.com/questions/9953651/window-event-doesnt-work-in-firefox/9953733#9953733 – Dasarp 2012-04-03 18:02:15

+0

我聯繫的職位是年紀比你 – ajax333221 2012-04-03 18:04:51

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應該表示「沒有按鈕被按下」,其他任何事情都是不合邏輯的。

此外,只有在微軟模式按鈕值可以結合起來,使5,將意味着「左邊和中間的按鈕」。甚至連瀏覽器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

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) 
相關問題