使用中键单击触发单击事件

2022-08-30 05:38:13

我正在使用散列链接的事件来打开一个弹出窗口。但中键单击不会触发 onclick 事件,而只是获取链接的属性值并将 URL 加载到新页面中。如何使用中键单击打开弹出窗口?onclick<div>href<div>


答案 1

编辑

此答案已被弃用,在 Chrome 上不起作用。您很可能最终会使用辅助点击事件,但请参阅下面的其他答案。

/编辑


beggs的答案是正确的,但听起来你想阻止中键的默认操作。在这种情况下,请包括以下内容

$("#foo").on('click', function(e) {
   if (e.which == 2) {
      e.preventDefault();
      alert("middle button"); 
   }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="foo" href="http://example.com">middle click me</a>

preventDefault() 将停止事件的默认操作。


答案 2

要检测中键/鼠标滚轮按钮,必须使用 事件 。例如:auxclick

<a href="https://example.com" onauxclick="func()" id="myLink"></a>

然后在脚本文件中

function func(e) {
  if (e.button == 1) {
    alert("middle button clicked")
  }
}

如果你想从JavaScript(不使用HTML属性)来做到这一点,那么你就是这个元素:onauxclickaddEventListener

let myLink = document.getElementById('myLink')
myLink.addEventListener('auxclick', function(e) {
  if (e.button == 1) {
    alert("middle button clicked")
  }
})
<a id="myLink" href="http://example.com">middle click me</a>

在此处查看有关该事件的mdn页面。auxclick