假设我想拦截某些锚元素链接并跟踪它们。我有以下工作。
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)"
,我可以这样做。但随后人们失去了在新标签中打开的能力。
答案 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
。