我希望能夠編寫代碼來響應(seperately)以下事件:如何響應在Javascript中點擊鼠標按鈕?
- 右手點擊
- 左手點擊
- 中鍵點擊(可選 - 不錯的,但我不能沒有這個生活)。
有沒有在JavaScript中內置的方式,我可以響應這些事件,或者我需要使用一個庫(最好是jQuery的)?
我希望能夠編寫代碼來響應(seperately)以下事件:如何響應在Javascript中點擊鼠標按鈕?
有沒有在JavaScript中內置的方式,我可以響應這些事件,或者我需要使用一個庫(最好是jQuery的)?
$('#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;
}
});
怪癖模式有a decent guide,它更復雜,那麼它需要是由於瀏覽器的差異。
我需要使用庫(最好是jQuery)嗎?
JavaScript庫不能做任何你自己不能做的事情;他們只是更容易做一些事情。
這是我使用的功能:
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));
};
月沃爾特的鼠標事件的文章似乎是小於知名他的一個關鍵事件,但一樣好,叩門怪異模式就相形見絀了:http://unixpapa.com/js/mouse.html
剛剛查看了jQuery代碼,它看起來好像正確地正確識別了事件的which
屬性(左1,中2,右3),儘管沒有IE的很好的報告多個按鈕的功能。
從MSDN:onclick event 從MSDN:button property
這就是微軟特有的。所有三個較早的答案已經指出了跨瀏覽器解決方案。 – Quentin 2010-10-03 17:35:10
你是對的,這是從微軟網站,我提到它與「從MSDN」的短語。我想也許它可以幫助他(甚至一點點)。 – syntaxcheck 2010-10-04 08:21:29
呵呵...這就是爲什麼我愛jQuery的! – skyeagle 2010-10-03 16:15:26
@skyeagle - jQuery是一種典型的愛或恨它的場景。我喜歡它,因爲它有着出色的選擇器,因爲我不需要擔心跨瀏覽器的差異,就像在這個例子中,如果你想用'普通'的JavaScript編碼。 – chigley 2010-10-03 16:19:10
需要注意的是,您在'mousedown'事件中所做的任何操作都將阻止大多數瀏覽器上的上下文菜單(例如,右鍵單擊)。如果提供了,你必須顯式掛接'contextmenu'事件。請參閱[David談到的]指南(http://stackoverflow.com/questions/3850498/how-to-respond-to-mouse-button-clicks-in-javascript/3850519#3850519)瞭解更多信息。例如:http://jsbin.com/anofi3 – 2010-10-03 16:24:13