2012-07-09 132 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;