2015-12-03 93 views
0

在某些网站上,您可以右键单击某个链接并选择“在新标签中打开”,并且工作正常,但如果使用鼠标中键这样做。 我遇到过这几次,它不是太烦人,但我仍然好奇是什么原因导致了这种行为。 (关于HOW) 这里是表现这种方式浏览使用Chrome 46网站: http://ebookfriendly.com/free-public-domain-books-sources/ HTML链接标记看起来正常:JavaScript禁止在新标签中打开链接的鼠标中键

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

原因一定有什么东西在JavaScript 。任何指针?

回答

1

看起来像这个链接有一个事件监听器,使用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() 
} 
+0

感谢您的快速答复。作为“frontend_dev”你能告诉我这种做法的任何理由吗? –

+0

看到我上面修改的答案。所以这似乎归功于Google Analytics(分析)。 –

+0

这里的答案将帮助你,只要确保你访问鼠标中间按钮的键码,并做一个语句来检查它是否是该按钮(我认为它的2)否则你会阻止所有点击事件的工作在所有的链接/链接 – TrojanMorse

1

你可以问哪个按钮引起事件并防止默认行为。

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

好的答案,我只是在接受的答案作出评论关于检查正确的键码。 +1 – TrojanMorse

+0

因此,如果期望的行为被preventDefault()阻止,链接仍然会被打开,因为有一些函数正在监听我猜测的mouseup事件? –

+0

如果您使用鼠标中键,链接将不会打开,而在其他情况下,浏览器将按预期行事。 – Sagi

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

作品只有当你保持警觉()

相关问题