【问题标题】:Disable mouse middle click event with help of jQuery在jQuery的帮助下禁用鼠标中键事件
【发布时间】:2017-12-07 13:15:56
【问题描述】:

我正在尝试禁用锚标记中的鼠标中键单击事​​件。它在 Chrome 中完美运行。这是我的 Chrome 实现代码:

//prevent mouse wheel middle click for chrome 
$(document).on('auxclick', 'a', function (e) {
  if (e.which === 2) { //middle Click 
          return false;
  }
return true;
});

注意:以上实现仅适用于 Chrome 55 及其最新版本

参考 Chrome 的 auxclick 文档: https://developers.google.com/web/updates/2016/10/auxclick

auxclick 浏览器兼容性:

参考链接: https://developer.mozilla.org/en-US/docs/Web/Events/auxclick

不幸的是,我无法在 Firefox、IE11 和 Safari 等其他浏览器中禁用鼠标中键事件

我正在尝试在浏览器的其余部分中寻找可能性。尝试 mousedown 和 mouseup 事件以在浏览器的其余部分禁用鼠标中键单击事​​件,但这些事件无助于实现我的期望。

【问题讨论】:

  • 你为什么要这个?可能有一个正当的理由,但滚动点击是本机用户界面(例如快速滚动),要非常小心地改变它。
  • @Stevm non of the reference 不适合我。我正在尝试在最新版本的浏览器中禁用。在我的问题中清楚地解释这一点。
  • @Martijin 他们的主要原因是如果我们在锚标签中单击鼠标中键,我们需要防止在新标签中导航我们的网站
  • @Martijin 我同意滚动点击是本机用户界面事件,但我们如何能够在 chrome 中防止无法在浏览器的其余部分中防止。你有什么正当理由吗?

标签: javascript jquery html


【解决方案1】:

auxclick 事件是一项实验性技术,因此它对浏览器的支持有限。

您可以使用mousedown 事件:

$('button').on('mousedown', function(e) {
    if (e.which === 2) {
      console.log('Disabled');
      return false;
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click me</button>

这应该适用于所有主流浏览器,尽管我不喜欢改变原生行为的想法。

【讨论】:

  • 感谢您的回复。您的代码没有完全满足我们的期望。如果我们在锚标记((即)example)中单击鼠标中键,我们的期望是阻止或禁用下一个选项卡的导航。我们在锚标签中尝试这种方式。中间点击事件在 if 循环中触发,但不阻止/禁用导航到所有主要浏览器中的下一个选项卡。
  • MouseEvent.which 是非标准技术。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多