javascript阻止鼠标中键在新标签

时间:2015-12-03 00:41:10

标签: javascript jquery html css google-chrome

在某些网站上,您可以右键单击某个链接,然后选择"在新标签页中打开"它工作正常,但如果使用鼠标中键就可以了。 我曾经遇到过这几次,它不是太烦人但我仍然好奇是什么导致了这种行为。 (关于如何) 这是一个使用Chrome 46浏览的网站: http://ebookfriendly.com/free-public-domain-books-sources/ html链接标签看起来很正常:



<a title="Feedbooks" href="http://www.feedbooks.com/">⇢ Feedbooks</a>
&#13;
&#13;
&#13;

原因必须是javascript中的内容。有什么指针吗?

4 个答案:

答案 0 :(得分:1)

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

编辑:很难说为什么完全他们这样做但是当我看到整个处理程序时,似乎链接被传递给谷歌分析:

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()
}

答案 1 :(得分:1)

您可以询问导致事件的按钮并阻止默认行为。

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

答案 2 :(得分:0)

    $(document).mousedown(function(e){
        if(e.which == 2 ){
            e.preventDefault();
            alert("middle click");   
            return false;
        }
    });

仅在您保持警报()

时才有效

答案 3 :(得分:0)

执行此操作的一种方法是使用auxclick事件。 (auxclick on MDN

下面的代码将阻止整个页面的中间点击行为。

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