我可以拦截中间点击和新标签链接点击吗?
问题描述:
可以说我想拦截某些锚点元素链接并跟踪它们。我有以下工程。我可以拦截中间点击和新标签链接点击吗?
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;
});
有没有一种方法能有这个点击代码仍然截取中间键或右键点击“在新标签中打开”?我知道我可以做到这一点,如果我使href="javascript:void(0)"
。但是随后人们失去了在新标签中打开的能力。
答
某些浏览器有auxclick
event。您还可以跟踪event.which
to track middle button。
$("a[data-mytracking]").on('click', function(ev) {
if(ev.which== 2) {
e.preventDefault();
// do smth else
}
});
通过contextmenu打开可能不可追踪,但您可以有oncontextmenu
事件。
P.S.至少Chrome不会触发点击打开一个中间按钮的新标签。但它确实触发了mouseup
。
那么你可以查找rmb和mmb的关键代码并为这些关键字添加一个监听器。然后,您将调用preventDefault()并仍然获取您的数据 - 我的跟踪值。 –