在JavaScript中,当我在滚动条上单击(显示在页面的任何滚动条),并悬停在该图像时,图像再次启动拖动。
图片只应在mousebutton down状态拖累。
所以,我想通过了解鼠标按钮的状态来解决这个问题(的mousedown或鼠标松开)
这个问题只存在于IE和Chrome,而不是在我试过其他浏览器。
使用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
向上或向下
我怎么知道鼠标按钮的当前状态?
在回答这个问题
我不明白为什么你的系统是决定拖动图像时点击已发生的浏览器(或与此有关的图像外)之外。为了回答正确我需要看你的实际代码(只是鼠标事件会做)。 然而,如果你的系统,因为我提以下,那么你不应该得到你所问的问题。
更多的信息
好老怪异模式有话要说这个...这基本上相当于一个事实,即由于W3C如果左键在鼠标移动处理器压制你不能发现,因为当按下任何按钮e.button
报道0,当左边的按钮被按下时 - 你猜怎么着? - e.button
报道0! (W3C为浏览器complient即是)。 这是在那里我完全Internet Explorer的“二进制符号”实施同意的时期之一:
http://www.quirksmode.org/js/events_properties.html#button
只有这样,才能获得鼠标状态-这是我所知道的-是检测和记录使用mousedown
和mouseup
-这听起来像你已经做什么。 现在,我还没有与任何较新的“触摸”基于事件的打转转的机会,他们也许能帮助你......但它会非常棘手得到它的工作跨浏览器。 在一天结束的时候,有时你必须接受你是在浏览器环境中工作,这将永远是一个专门设计的应用程序一样光滑。
快速代码,将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;" />
在你描述的情况来看,问题是,你正在处理mouseup
和mousedown
唯一的国家。 你也应该考虑处理blur
事件,要知道,鼠标已经离开的对象。 你可能想将其指定为相同的处理mouseup
。
为什么不直接使用jQuery拖动它可以处理这样的事件去?
如果你真的要绑定mouseup和的mousedown你可以使用jQuery
$(object).on("mouseup",function(){});
文章来源: How to know the current state of mouse button(mouseup state or mousedown state)