我做了一个自定义指令,我想在其中捕获鼠标中键单击事件。我认为这只是一个正常的单击事件,可以从那里开始,但是只有在单击鼠标左键时才会触发。
@HostListener('click', ['$event']) onClick($event){
console.info('Click event fired', $event);
}
有什么建议吗?
谢谢!
答案 0 :(得分:3)
您需要处理mouseup
或mousedown
事件,该事件捕获所有鼠标单击,而不仅仅是鼠标左键。
@HostListener('mouseup', ['$event']) onClick($event){
console.info('Click event fired', $event);
if($event.which === 2)
console.info('Middle mouse button clicked');
}
返回的$event
变量将是MouseEvent。您可以检查which
属性以查看按下了哪个按钮。如果$event.which === 2
,则将是鼠标中键。
Here is a live example是我创建的,以便您可以看到它的实际效果。
答案 1 :(得分:1)
尝试mousedown事件并捕获中键单击
@HostListener('mousedown', ['$event']) onClick(e) {
console.log(e.which)
if (e.which === 2) {
console.log('Middle button ==> ', e.which)
e.preventDefault();
}
}
答案 2 :(得分:1)
更新了2020年的答案
不推荐使用MouseEvent的“哪个”属性。找出按钮被点击的最新方法是“按钮”属性。
假设“事件”是“ MouseEvent”,event.button是一个数字,可以解释如下:
根据@ alex-wiese的答案进行调整,并根据输入设备,您将获得:
@HostListener('mouseup', ['$event']) onClick($event){
console.info('Click event fired', $event);
if($event.button === 1)
console.info('Middle mouse button clicked');
}
来源:https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button