亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript:檢查鼠標按鈕是否按下?

JavaScript:檢查鼠標按鈕是否按下?

HUWWW 2019-10-17 11:21:21
有沒有一種方法可以檢測JavaScript中的鼠標按鈕當前是否處于按下狀態?我知道“ mousedown”事件,但這不是我所需要的。按下鼠標按鈕后的一段時間,我希望能夠檢測它是否仍被按下。這可能嗎?
查看完整描述

3 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

這是一個古老的問題,這里的答案似乎主要提倡使用mousedown并mouseup跟蹤按鈕是否被按下。但是,正如其他人指出的那樣,mouseup只有在瀏覽器中執行時才會觸發,這可能導致失去對按鈕狀態的跟蹤。


但是,MouseEvent(現在)指示當前按下了哪些按鈕:


對于所有現代瀏覽器(Safari除外),請使用 MouseEvent.buttons

對于Safari瀏覽器,使用MouseEvent.which(buttons將是不確定的Safari瀏覽器)注:which從使用不同數量buttons的右和中間點擊。

當在上注冊時document,mousemove一旦光標重新進入瀏覽器,它將立即觸發,因此,如果用戶釋放到外面,則一旦將鼠標移回里面,狀態就會被更新。


一個簡單的實現可能看起來像:


var leftMouseButtonOnlyDown = false;


function setLeftButtonState(e) {

  leftMouseButtonOnlyDown = e.buttons === undefined 

    ? e.which === 1 

    : e.buttons === 1;

}


document.body.onmousedown = setLeftButtonState;

document.body.onmousemove = setLeftButtonState;

document.body.onmouseup = setLeftButtonState;

如果需要更復雜的場景(不同的按鈕/多個按鈕/控制鍵),請查看MouseEvent文檔。當Safari取消游戲時,這應該會變得更加容易。


查看完整回答
反對 回復 2019-10-17
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

我認為最好的方法是保留自己的鼠標按鈕狀態記錄,如下所示:


var mouseDown = 0;

document.body.onmousedown = function() { 

    mouseDown = 1;

}

document.body.onmouseup = function() {

    mouseDown = 0;

}

然后,在您的代碼后面:


if (mouseDown == 1) {

    // the mouse is down, do what you have to do.

}


查看完整回答
反對 回復 2019-10-17
  • 3 回答
  • 0 關注
  • 1503 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號