有没有办法检测JavaScript中的鼠标按钮当前是否按下了?
我知道"mousedown“事件,但这不是我需要的。在鼠标按键被按下后的一段时间,我希望能够检测它是否仍被按下。
这个是可能的吗?
发布于 2008-11-27 00:48:03
我认为最好的方法是保留您自己的鼠标按钮状态记录,如下所示:
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.
}
发布于 2010-12-26 16:14:40
解决方案不是很好。用户可以在文档上"mousedown“,然后在浏览器外"mouseup”,在这种情况下,浏览器仍然会认为鼠标按下了。
唯一好的解决方案是使用IE.event对象。
发布于 2016-02-05 07:32:57
我知道这是一个古老的帖子,但我认为使用鼠标向上/向下跟踪鼠标按钮感觉有点笨拙,所以我找到了一个可能会吸引一些人的替代方案。
<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部分中设置自己的用户定义样式,但我无法让它工作。如果可能的话,那就更好了。
https://stackoverflow.com/questions/322378
复制相似问题