[英]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.