[英]Catching a middle mouse button click in an Angular 6 directive
我做了一个自定义指令,我想在其中捕获鼠标中键单击事件。 我认为这只是一个普通的点击事件,然后从那里开始,但只有在单击鼠标左键时才会触发。
@HostListener('click', ['$event']) onClick($event){
console.info('Click event fired', $event);
}
有什么建议?
谢谢!
您需要处理捕获所有鼠标点击的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
那么它将是鼠标中键。
尝试 mousedown 事件并捕捉中间按钮的点击
@HostListener('mousedown', ['$event']) onClick(e) {
console.log(e.which)
if (e.which === 2) {
console.log('Middle button ==> ', e.which)
e.preventDefault();
}
}
2020 年的更新答案
MouseEvent 中的“which”属性已被弃用。 当前确定点击了哪个按钮的最新方法是“按钮”属性。
假设“事件”是“鼠标事件”,则 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.