首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript:检查鼠标按键是否按下?

JavaScript:检查鼠标按键是否按下?
EN

Stack Overflow用户
提问于 2008-11-27 06:29:23
回答 12查看 196.7K关注 0票数 156

有没有办法检测JavaScript中的鼠标按钮当前是否按下了?

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

这个是可能的吗?

EN

回答 12

Stack Overflow用户

发布于 2008-11-27 00:48:03

我认为最好的方法是保留您自己的鼠标按钮状态记录,如下所示:

代码语言:javascript
复制
var mouseDown = 0;
document.body.onmousedown = function() { 
    mouseDown = 1;
}
document.body.onmouseup = function() {
    mouseDown = 0;
}

然后,在后面的代码中:

代码语言:javascript
复制
if (mouseDown == 1) {
    // the mouse is down, do what you have to do.
}
票数 22
EN

Stack Overflow用户

发布于 2010-12-26 16:14:40

解决方案不是很好。用户可以在文档上"mousedown“,然后在浏览器外"mouseup”,在这种情况下,浏览器仍然会认为鼠标按下了。

唯一好的解决方案是使用IE.event对象。

票数 14
EN

Stack Overflow用户

发布于 2016-02-05 07:32:57

我知道这是一个古老的帖子,但我认为使用鼠标向上/向下跟踪鼠标按钮感觉有点笨拙,所以我找到了一个可能会吸引一些人的替代方案。

代码语言:javascript
复制
<style>
    div.myDiv:active {
        cursor: default;
    }
</style>

<script>
    function handleMove( div ) {
        var style = getComputedStyle( div );
        if (style.getPropertyValue('cursor') == 'default')
        {
            // You're down and moving here!
        }
    }
</script>

<div class='myDiv' onmousemove='handleMove(this);'>Click and drag me!</div>

active选择器处理鼠标点击要比鼠标向上/向下好得多,你只需要一种在onmousemove事件中读取状态的方法。为此,我需要作弊,并依赖于默认光标是“自动”的事实,我只是将其更改为“默认”,这是默认情况下自动选择的。

您可以在getComputedStyle返回的对象中使用任何可以用作标志的内容,而不会影响页面的外观,例如边框颜色。

我本想在:active部分中设置自己的用户定义样式,但我无法让它工作。如果可能的话,那就更好了。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/322378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档