我可以拦截中间点击和新标签链接点击吗?

时间:2017-08-25 21:47:29

标签: javascript html dom-events

假设我想拦截某些锚元素链接并跟踪它们。我有以下工作。

HTML

<a href="/foo" data-mytracking="fooclicked">go to foo</a>

JS

$('a[data-mytracking]').click((event) => {
  event.preventDefault();
  // Do some synchronous code to log tracking
  console.log(event.target.getAttribute('data-mytracking'), event.target.href);
  window.location = event.target.href;
});

有没有办法让这个点击代码仍然可以拦截中间点击或右键点击&#34;在新标签中打开&#34;?我知道如果我制作href="javascript:void(0)",我可以这样做。但随后人们失去了在新标签中打开的能力。

1 个答案:

答案 0 :(得分:3)

有些浏览器有auxclick event。您还可以跟踪event.which to track middle button

$("a[data-mytracking]").on('click', function(ev) { 
   if( ev.which== 2 ) {
      e.preventDefault();
      // do smth else 
   }
});

通过上下文菜单打开可能无法跟踪,但您可以进行oncontextmenu事件。

P.S。至少Chrome不会触发点击打开带有中键的新标签。但它确实会触发mouseup