【问题标题】:stop opening a new tab on click mouse middle button单击鼠标中键停止打开新标签
【发布时间】:2016-06-02 11:41:01
【问题描述】:

我在 htm 中有锚标记。当我在锚标记上单击鼠标中键时,会打开新选项卡。 但我想停止它的工作。我在javascript中尝试了很多技巧,但它不起作用。任何人都可以解决这个问题吗?

<a class="tag" href="www.google.com>google</a>

我不想通过在具有类(标签)的锚标签上单击鼠标中键来打开新标签... 防止鼠标中键在具有特定 ID 的锚选项卡上打开新选项卡。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • mouseup 可能为时已晚
  • 就个人而言,除非你有充分的理由,否则我不会这样做。劫持用户的预期行为真的很烦人。
  • 别这样,如果中间点击没有在新标签页中打开页面,我会离开你的网站
  • 标签: javascript jquery html


    【解决方案1】:

    我同意 cmets 中的@Matt Lishman:不要。

    但是给你一个解决方案:

    您的代码几乎是正确的。只有(正如@GoTo 所说),mouseup 为时已晚。 当您侦听click 事件时,您可以检查事件对象上的which 属性。当您使用滚轮单击时,which2

    所以,如果which === 2preventDefault

    https://jsfiddle.net/k3o5pt6c/

    【讨论】:

    • 我同意你的看法,但出于某种特殊原因,我想停止它以打开一个新标签。. 谁能有解决方案我有一个工作示例 js.do/rohanarihant/mousemiddle1 但我停止工作所有锚标签,但我只想通过它的 id(my) 停止一个 -
    • 感谢mouseup为时已晚的提示,解决了我长达一小时的谷歌搜索!
    【解决方案2】:

    我根据我的要求找到了解决方案

    <html>
    <head>
    <script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
    <script>
    $(function(){
      $(document).on("click", function(e){
        if($(e.target).is("#google") && e.button===1)
          e.preventDefault()
      })
    })
    </script>
    <meta charset=utf-8 />
    <title>JS Bin</title>
    </head>
    <body>
    <a href="http://google.com" id="google">Google</a><br> <a href="http://bing.com" id="bing">Bing</a>
    </body>
    </html>
    

    fiddle link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多