JavaScript:检查鼠标按钮是否按下?

有没有一种方法可以检测JavaScript中的鼠标按钮当前是否处于按下状态?

我知道“ mousedown”事件,但这不是我所需要的。按下鼠标按钮后的一段时间,我希望能够检测它是否仍被按下。

这可能吗?


HUWWW
浏览 1464回答 3
3回答

MMMHUHU

这是一个古老的问题,这里的答案似乎主要提倡使用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取消游戏时,这应该会变得更加容易。

Cats萌萌

我认为最好的方法是保留自己的鼠标按钮状态记录,如下所示: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.}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript