Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止中键单击按钮在FIREFOX中打开新选项卡不工作_Javascript_Html_Firefox - Fatal编程技术网

Javascript 防止中键单击按钮在FIREFOX中打开新选项卡不工作

Javascript 防止中键单击按钮在FIREFOX中打开新选项卡不工作,javascript,html,firefox,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

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

我有下面的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>

功能打开(事件、元素){
event=event | | window.event;
event.preventDefault();
if(event.which!=3){
元素。单击();
}
}
函数confirmClick(){
返回确认(“您确定吗?”);
}

基本上,我试图在点击链接时提示确认是否使用鼠标中键来打开新选项卡-我想阻止新选项卡打开-。这在Chrome中非常有效,但是在Firefox中不起作用——当它退出javascript代码(即“confirmClick”函数)时,它会打开一个新选项卡,尽管它成功触发了preventDefault()。你知道为什么这在FF中不起作用吗?现在我宁愿远离jQuery回复。

我想正确的方法是使用
auxclick
事件。()

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