【问题标题】:How to override *only* left click on anchor?如何覆盖*仅*左键单击锚?
【发布时间】:2016-03-29 03:17:30
【问题描述】:

我知道我可以使用event.preventDefault() 阻止链接被跟踪。但我只想阻止普通的左键单击或触摸点击的默认操作。 shift-left-click, ctrl-left-click, right click, middle click都应该执行默认动作。

如何检测普通的左键单击或轻触?

【问题讨论】:

    标签: javascript events onclick dom-events mouseevent


    【解决方案1】:

    您可以检查MouseEvent 属性,例如buttonaltKeyshiftKeyctrlKey 来执行此操作

    document.getElementById('test').addEventListener('click', function(event) {
      snippet.log('button: ' + event.button);
      snippet.log('ctrlKey: ' + event.ctrlKey);
      snippet.log('shiftKey : ' + event.shiftKey);
      snippet.log('altKey : ' + event.altKey);
    
      if (event.button == 0 && !event.ctrlKey && !event.shiftKey && !event.altKey) {
        event.preventDefault();
      }
    })
    <!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
    <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
    <a id="test" href="http://stackoverflow.com/">test</a>

    【讨论】:

    • 我也添加了metaKey。谢谢。我希望这些是 button 等键的单一属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多