我所見過的關於如何在JavaScript中檢測鼠標中點擊的問題都與jQuery有關,但我想知道如何使用普通JavaScript檢測鼠標中鍵的點擊。我嘗試使用onClick()
,但它似乎只適用於鼠標左鍵。如何檢測鼠標中鍵點擊?
是否有JavaScript函數可以檢測到鼠標左鍵和鼠標中鍵的點擊,如果沒有,可以檢測鼠標中鍵的點擊?
我問的原因是我想在單擊鏈接時進行函數調用,而不管是否使用了鼠標左鍵或鼠標中鍵。
我所見過的關於如何在JavaScript中檢測鼠標中點擊的問題都與jQuery有關,但我想知道如何使用普通JavaScript檢測鼠標中鍵的點擊。我嘗試使用onClick()
,但它似乎只適用於鼠標左鍵。如何檢測鼠標中鍵點擊?
是否有JavaScript函數可以檢測到鼠標左鍵和鼠標中鍵的點擊,如果沒有,可以檢測鼠標中鍵的點擊?
我問的原因是我想在單擊鏈接時進行函數調用,而不管是否使用了鼠標左鍵或鼠標中鍵。
onclick不綁定到鼠標,而是綁定到目標元素本身。
下面是如何檢測的元素是否是中間點擊:
document.body.onclick = function (e) {
if (e && (e.which == 2 || e.button == 4)) {
console.log('middleclicked')
}
}
我已經添加了另一個示例,您可以傳入其他參數。注意函數本身是如何返回一個函數的,隱含的「e」位於封裝函數的調用堆棧上。我通常不會遇到上下文來解釋這種語法。感謝您的機會,尤其是不使用jQuery! – Schien
@fiatjaf感謝您編輯答案。只是想指出編輯將onclick事件附加到document.body,而我的答案附加到特定的dom節點。編輯會顯着改變我的答案。由於OP已經得到了他的答案,所以我不介意在這一點上是否恢復編輯。 – Schien
對於大編輯,我很抱歉,但StackOverflow並不是一個註定只回答提問的特定人員的網站,而是一個關於如何編寫代碼的大百科全書。我認爲,你的答案在其他地方不容易找到有用的信息,但它令人困惑。我的編輯是爲了讓未來的人們閱讀這個問題更有用,更容易閱讀。如果您認爲有問題,請重新編輯。 – fiatjaf
你必須檢測事件2
event = event || window.event; //make sure to pass the event into the function
if (event.which == 2) {
//do code..
}
下面的代碼可以幫助你。它可以檢測用戶點擊了哪個鼠標按鈕。 e.which == 2
用於中間按鈕。
<script type="text/javascript">
function detect_button(e){
e = e || window.event;
if (e.which == null){
button = (e.button < 2) ? 'left' : ((e.button == 4) ? 'middle' : 'right');
}
else{
button = (e.which < 2) ? 'left' : ((e.which == 2) ? 'middle' : 'right');
}
alert(button);
}
</script>
如果您要複製從評論鏈接的代碼,請至少先解釋它。 –
你必須使用已經內置到DOM和JavaScript引擎,然後把在情況下,瀏覽器不同的東西(這就是爲什麼jQuery是通常使用)。
document.getElementById("myBtn").onclick = function(event) {
event = event || window.event
// Now event is the event object in all browsers.
// Note: event.target - the reference to clicked element. IE uses event.srcElement
// In W3C there is a button property which works same in all browsers except IE:
// 0 - left button, 1 - middle button, 2 - right button
// For IE, left button = button & 1 (the 1st bit) is set to 1
// right button = button & 2 (the 2nd bit) is 1
// and middle button = button & 4 (the 3rd bit)
var left = event.button == 0 || 1 == event.button&1;
var middle = event.button == 1 || 1 == event.button&2;
var right = event.button == 2 || 1 == event.button&3;
// Put your code here
}
後前搜索:http://stackoverflow.com/questions/5833928/jquery-alert-when-middle-mouse-button-clicked )。 對不起,內特,我還沒有好好收穫! –
http://www.thonky.com/javascript-and-css-guide/detect-mouse-button/ – sinisake
@ Gaucho_9在譴責之前閱讀問題;-)我試圖弄清楚是否有可能跟蹤中老鼠按鈕點擊*沒有* jQuery。 – Nate