2012-07-09 84 views
5

我試圖找到一種方法來禁用鼠標滾輪按鈕的默認動作,即打開新選項卡中的鏈接。如何禁用鼠標滾輪點擊按鈕?

這可能嗎?

+0

是的,這possibru – 2012-07-09 09:30:00

+2

又到了今天omeone誰不尊重標準鼠標事件-http://www.howtogeek.com/howto/internet/prevent-annoying-websites-from-messing-with-the-right-click-menu-in-firefox/和http://www.pcworld.com/article/185288/bring_your_middle_mouse_button_to_life.html – 2012-07-09 09:45:42

回答

9

Bind a generic click event handler that specifically checks for middle clicks。在該事件處理程序,調用e.preventDefault()

$("#foo").on('click', function(e) { 
    if(e.which == 2) { 
     e.preventDefault(); 
    } 
}); 

請注意,並非所有的瀏覽器都支持防止這種默認操作。對我而言,它只適用於Chrome。 Firefox,Opera和IE9都不會通過鼠標中鍵單擊來引發點擊事件。他們確實會提高鼠標和mousedown。

+4

不工作在鉻http://jsbin.com/arulub/edit#javascript,html不在Firefox中。請注意,你的代碼是錯誤的,''點擊''甚至不會觸發中間/鼠標滾輪按鈕。 – Esailija 2012-07-09 09:35:45

+3

不要使用'live()'! – Christoph 2012-07-09 09:38:48

+0

@Christoph:對不起,從建議的鏈接複製。更正它。 – 2012-07-09 09:39:47

2

禁用鼠標滾輪事件通過使用JAVASCRIPT

IE

document.attachEvent('onmousewheel', function(e){ 
    if (!e) var e = window.event; 
    e.returnValue = false; 
    e.cancelBubble = true; 
    return false; 
}, false); 

的Safari

document.addEventListener('mousewheel', function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
    e.cancelBubble = false; 
    return false; 
}, false); 

歌劇

document.attachEvent('mousewheel', function(e){ 
    if (!e) var e = window.event; 
    e.returnValue = false; 
    e.cancelBubble = true; 
    return false; 
}, false); 

火狐

document.addEventListener('DOMMouseScroll', function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
    e.cancelBubble = false; 
    return false; 
}, false); 
+0

它在Firefox中不起作用。 – Alvaro 2014-05-14 09:17:12

5

這對我的作品......

$(document).on("mousedown", "selector", function (ev) { 
    if (ev.which == 2) { 
     ev.preventDefault(); 
     alert("middle button"); 
     return false; 
    } 
}); 
+0

對不起,添加了一條不會添加到封面的評論。但是那真是太棒了。 – 2015-08-03 16:11:19

1

我的代碼:

$(document).on('auxclick', 'a', function(e) { 
if (e.which === 2) { //middle Click 
    e.preventDefault(); 
    e.stopPropagation(); 
    e.stopImmediatePropagation(); 
    return false; 
} 
return true;