在FIREFOX中打开新选项卡时阻止中间单击按钮不起作用

时间:2017-12-26 22:32:54

标签: javascript html firefox

我有以下简单的代码 - 我有一个相当复杂的东西,但这举例说明了我的观点 - 。

我有以下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的回复。

1 个答案:

答案 0 :(得分:0)

我猜想做到这一点的正确方法是使用auxclick事件。 (auxclick on MDN

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