javascript - 防止中键单击按钮在 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代码

  <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/

相关文章:

html - 是否可以使 Chrome、FF 和 IE9 将显示值 tableXXX 相同?

javascript - 如何在页面加载后淡入: Javascript

javascript - 半正矢公式 - 结果过高

javascript - 导入的组件文件在使用 es6 的 AngularJS 应用程序中不起作用

html - Firefox 中的字体非常小

jquery - 下拉菜单闪烁,Firefox 除外

javascript - ionic View 标题中的图像

html - 使用 Bootstrap 设置 body 的最大宽度

php - <选择> 和 $_POST

html - 背景大小 :cover equivalent