Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript阻止鼠标中键在新选项卡中打开链接_Javascript_Jquery_Html_Css_Google Chrome - Fatal编程技术网

javascript阻止鼠标中键在新选项卡中打开链接

javascript阻止鼠标中键在新选项卡中打开链接,javascript,jquery,html,css,google-chrome,Javascript,Jquery,Html,Css,Google Chrome,在某些网站上,您可以右键单击链接并选择“在新选项卡中打开”,这样做很好,但如果使用鼠标中键则不行。 我遇到过几次这种情况,它不是很烦人,但我仍然很好奇是什么导致了这种行为。(关于如何) 以下是一个使用Chrome 46浏览的网站: html链接标记看起来很正常: 此链接似乎有一个使用preventDefault()并通过其他方式打开页面的事件侦听器 编辑:很难说他们为什么这么做,但当我查看整个处理程序时,似乎链接正在传递到google analytics: function(e) {

在某些网站上,您可以右键单击链接并选择“在新选项卡中打开”,这样做很好,但如果使用鼠标中键则不行。 我遇到过几次这种情况,它不是很烦人,但我仍然很好奇是什么导致了这种行为。(关于如何) 以下是一个使用Chrome 46浏览的网站: html链接标记看起来很正常:


此链接似乎有一个使用
preventDefault()
并通过其他方式打开页面的事件侦听器

编辑:很难说他们为什么这么做,但当我查看整个处理程序时,似乎链接正在传递到google analytics:

function(e) {
    var n = this.getAttribute("href"),
        i = "string" == typeof this.getAttribute("target") ? this.getAttribute("target") : "";
    ga("send", "event", "outbound", "click", n, {
        hitCallback: t(n, i)
    }, {
        nonInteraction: 1
    }), e.preventDefault()
}

您可以询问是哪个按钮导致了事件并阻止默认行为

document.querySelector("a").addEventListener("click", function(e) { 
   if (e.which === 2) {
      e.preventDefault();
   } 
}, false);

仅当您保持警报()时有效。

一种方法是使用
auxclick
事件。()

以下代码将阻止整个页面上的中键单击行为

window.addEventListener("auxclick", (event) => {
  if (event.button === 1) event.preventDefault();
});

谢谢你的快速回复。作为一名“前端开发者”,你能告诉我这种做法的原因吗?请参阅上面我修改的答案。这似乎是由于Google Analytics。这里的答案会帮助你,只要确保你访问鼠标中键的键码,并做一个声明,检查它是否是该按钮(我认为它是2),否则你将阻止所有点击事件在所有链接上工作好的答案,我刚刚就检查已接受答案上的正确键码发表了评论+1因此,如果preventDefault()阻止了预期的行为,则链接仍将打开,因为我猜有一些函数正在侦听mouseup事件?如果使用鼠标中键,链接将不会打开,在其他情况下,浏览器将按预期运行。
window.addEventListener("auxclick", (event) => {
  if (event.button === 1) event.preventDefault();
});