如何知道鼠标键的当前状态(鼠标松开状态或鼠标按下状态)(How to know the curren

2019-07-31 06:33发布

在JavaScript中,当我在滚动条上单击(显示在页面的任何滚动条),并悬停在该图像时,图像再次启动拖动。

图片只应在mousebutton down状态拖累。

所以,我想通过了解鼠标按钮的状态来解决这个问题(的mousedown或鼠标松开)

这个问题只存在于IEChrome,而不是在我试过其他浏览器。

使用Javascript:

document.onmousemove = mouseMove;
document.onmousedown = mouseDown;
document.onmouseup   = mouseUp;

function mouseMove(ev) {

    var mouseButtonState;
    // put code here to get mouseButtonState variable
    console.log('state of mouse is'+mouseButtonState);
}

当我移动鼠标时,程序应该显示的要求值mouseButtonState 向上向下

我怎么知道鼠标按钮的当前状态?

Answer 1:

在回答这个问题

我不明白为什么你的系统是决定拖动图像时点击已发生的浏览器(或与此有关的图像外)之外。为了回答正确我需要看你的实际代码(只是鼠标事件会做)。 然而,如果你的系统,因为我提以下,那么你不应该得到你所问的问题。

更多的信息

好老怪异模式有话要说这个...这基本上相当于一个事实,即由于W3C如果左键在鼠标移动处理器压制你不能发现,因为当按下任何按钮e.button报道0,当左边的按钮被按下时 - 你猜怎么着? - e.button报道0! (W3C为浏览器complient即是)。 这是在那里我完全Internet Explorer的“二进制符号”实施同意的时期之一:

http://www.quirksmode.org/js/events_properties.html#button

只有这样,才能获得鼠标状态-这是我所知道的-是检测和记录使用mousedownmouseup -这听起来像你已经做什么。 现在,我还没有与任何较新的“触摸”基于事件的打转转的机会,他们也许能帮助你......但它会非常棘手得到它的工作跨浏览器。 在一天结束的时候,有时你必须接受你是在浏览器环境中工作,这将永远是一个专门设计的应用程序一样光滑。

快速代码,将Internet Explorer的工作:

document.body.onmousemove = function(e){
  e = e ? e : Event;
  if ( e.button == 1 ) {
    /// mouse button is pressed
  }
}

快速的代码,会为IE和其他几乎任何工作:

var delm = document.documentElement ? document.documentElement : document.body;
var buttonPressed = false;

delm.onmousdown = function(e){
  buttonPressed = true;
}

delm.onmousup = function(e){
  buttonPressed = false;
}

delm.onmousmove = function(e){
  if ( buttonPressed ) {
    /// the button is pressed, but only whilst being 
    /// detected inside the browser
  }
}

正如其他海报指出,你可以尝试工具,当用户的鼠标指针已经离开/重新进入浏览器环境,可以检测系统 - 但我所有的努力在这个多年来从来没有很成功。 Flash有这更好的支持,但我怀疑你会想去那里?

边注

正如位的历史信息,可能仍然是使用的今天,随着拖动图像较旧版本的Internet Explorer打交道时,需要以下被应用到图像前的阻力会成功。 这阻止了默认浏览器从切割和的方式获得拖动系统。 有实现这个比使用内嵌处理器更好的办法,但我把这个在这里为了简单和清晰。

<img src="..." ondragstart="return false;" />


Answer 2:

在你描述的情况来看,问题是,你正在处理mouseupmousedown唯一的国家。 你也应该考虑处理blur事件,要知道,鼠标已经离开的对象。 你可能想将其指定为相同的处理mouseup



Answer 3:

为什么不直接使用jQuery拖动它可以处理这样的事件去?

如果你真的要绑定mouseup和的mousedown你可以使用jQuery

$(object).on("mouseup",function(){});


文章来源: How to know the current state of mouse button(mouseup state or mousedown state)