防止FIREFOX浏览器中间点击按钮打开新标签页的方法无效

3

我有以下简单代码——我曾经有一个更复杂的东西来阐明我的观点——。

我有以下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()。有什么想法为什么它在Firefox中无法工作吗?我现在更倾向于避免使用jQuery。

1个回答

1

我猜这个问题的正确解决方法是使用 auxclick 事件。(MDN 上的 auxclick

window.addEventListener("auxclick", (event) => {
  if (event.button === 1) {
    if (!confirm("Are you sure?")) event.preventDefault();
  }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接