使用jQuery禁用鼠标滚轮中键事件

3

我编写了以下代码来禁用鼠标点击时滚动,但是我的代码没有起作用,当我用鼠标滚轮点击时会打开我的链接。

这是我的代码:

$('a').on('mousedown', function(e) {
  if (e.which === 2) {
    console.log('Disabled');
    return false;
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<a href="#dontwanttoopen"> click here </a>

3个回答

5
您需要使用auxclick来禁用此功能。将您的'click'替换为'auxclick',并添加e.preventDefault(),它将正常工作,在Chrome和FF中测试过。

$('a').on('auxclick', function(e) {
  if (e.which === 2) {
    e.preventDefault();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<a href="#dontwanttoopen"> click here </a>


火狐浏览器怎么样?没有任何代码可以在所有浏览器中运行吗? - inaz
已在Firefox 73和Chrome 73中测试,但无法访问Safari和IE :) - Akhil Aravind
谢谢。 :) 你能告诉我 e.which === 2 的意思吗? - inaz
1
@inaz e.which 属性返回事件中按下的键盘键或鼠标按钮。 - Akhil Aravind

2

您可以使用event.preventDefault()函数来取消一个操作

document.onmousedown= function (e) {
    if( e.which == 2 ) {
        e.preventDefault();
        alert("middle button pressed, dont open"); 
    }
}
<a href="#dontwanttoopen"> click here </a>


0
请尝试下面的代码,谢谢:
<a href="#dontwanttoopen"  id="link_click">click here </a>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"> 
</script>

<script>
var el = document.getElementById('link_click');
el.onmousedown = mouse_down;


function mouse_down() {
alert('mouse_down() called');
return false;
}
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接