【问题标题】:How can I handle the Angular (click) event for the middle mouse button?如何处理鼠标中键的 Angular(单击)事件?
【发布时间】:2019-10-09 04:01:42
【问题描述】:

我有一个图标作为打开 URL 的链接。当用户点击该链接时,我需要进行 API 调用和其他一些操作。

现在单击左键以及 Ctrl + 单击会触发该方法正常。只有当鼠标中键打开链接时,该方法才会被触发。

<a [href]="'somelink.com' + someVariable" target="_blank" (click)="someMethod('some', 'params')">
    <div class="some-icon">
        <img src="/assets/icon/icon.svg" height="54" alt="Icon" />
    </div>
</a>

还有其他方法可以在我的组件中调用方法吗?

【问题讨论】:

    标签: html angular typescript


    【解决方案1】:

    对于辅助鼠标按钮,您可以处理auxclick 事件。在以下示例中,click 事件由鼠标主按钮触发,auxclick 事件由其他鼠标按钮触发。

    <a (click)="onClick($event)" (auxclick)="onAuxClick($event)">...</a>
    
    onClick(event: MouseEvent) {
      console.log("click - button", event.button, event.which);
    }
    
    onAuxClick(event: MouseEvent) {
      console.log("auxclick - button", event.button, event.which);
    }
    

    有关演示,请参阅 this stackblitz。请注意,相同的方法可以处理这两个事件。我在演示中调用了不同的方法来显示处理了哪个事件。

    【解决方案2】:

    看看这个:

    https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which

    这就是实现

    (click)="$event.which == 2 ? yourFunction($event) : $event.preventDefault()"
    

    preventDefault() 用于停止事件。

    【讨论】:

    • 我试过这个。但它根本不会触发事件。
    • @Thimo 正如您在链接中看到的那样,这不是标准功能。您是否已经尝试过使用其他浏览器?
    • 是的,我已经在 Chrome 和 Firefox 中尝试过。 (auxclick)="someFunction()" 似乎可行,谢谢。
    • 至少在 Angular 9 中,处理程序(点击)只处理正常点击,而不是中间的辅助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多