我有以下简单代码 - 我有一个相当复杂的东西,但这证明了我的观点 -。
我有下面的html
<body>
<a id="somelink" href="http://www.google.com"
onmousedown="preventOpen(event,this)" onclick="return
confirmClick();">Click me</a>
</body>
和下面的javascript代码
<script>
function preventOpen(event, element){
event = event || window.event;
event.preventDefault();
if (event.which != 3) {
element.click();
}
}
function confirmClick(){
return confirm("Are you sure?");
}
</script>
基本上,如果单击链接时使用鼠标中键单击鼠标滚轮按钮打开新选项卡,我会尝试提示确认 - 我想阻止打开新选项卡-。这在 Chrome 中就像一个魅力一样工作,但是,它在 Firefox 中不起作用 - 它退出 javascript 代码的那一刻 - 即“confirmClick”功能 - 它打开一个新选项卡 - 尽管它成功触发了 preventDefault() 。关于为什么这在 FF 中不起作用的任何想法?我现在宁愿远离 jQuery 回复。
最佳答案
我想正确的方法是使用 auxclick
事件。 ( auxclick on MDN )
window.addEventListener("auxclick", (event) => {
if (event.button === 1) {
if (!confirm("Are you sure?")) event.preventDefault();
}
});
关于javascript - 防止中键单击按钮在 FIREFOX 中打开新选项卡不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47984395/