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