2012-08-31 62 views
4

我想在鼠标的状态下状态了状态如何检查当前的鼠标按钮状态使用JavaScript

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

function mouseMove(ev) { 

    mouseState=""; 
    //How can I know the state button of mouse button from here 
    if(mouseState=='down') { 
     console.log('mouse down state') 
    } 

    if(mouseState=='up') { 
     console.log('mouse up state') 
    } 
} 

function mouseDown(ev) { 
    console.log('Down State you can now start dragging'); 
    //do not write any code here in this function 
} 

function mouseUp(ev) { 
    console.log('up state you cannot drag now because you are not holding your mouse') 
    //do not write any code here in this function 
} 

,当我提出我的鼠标,程序应该显示的要求值mouseState现在在控制台上向下或向下移动

+0

此问题与[chrome问题](http://www.pmarks.net/posted_links/chromium_up_down_bug.html)有关。而IE也显示出同样的问题。有没有解决方案 – vusan

+0

我想知道鼠标按钮的状态,因为[this](http://stackoverflow.com/questions/12191743/how-to-know-the-current-state-of-mouse-buttonmouseup-状态或mousedown状态)问题。 – vusan

回答

2

您只需为其创建一个变量。

document.onmousemove = mouseMove; 
document.onmousedown = mouseDown; 
document.onmouseup = mouseUp; 
var mouseState = "up"; 

function mouseMove(ev) { 

    //How can I know the state of mouse from here 
    if(mouseState=='down') { 
     console.log('mouse down state') 
    } 

    if (mouseState=='up') { 
     console.log('mouse up state') 
    } 
} 

function mouseDown(ev) { 
    mouseState = "down"; 
    console.log('Down State you can now start dragging'); 
    //do not write any code here in this function 
} 

function mouseUp(ev) { 
    mouseState = "up"; 
    console.log('up state you cannot drag now because you are not holding your mouse') 
    //do not write any code here in this function 
} 

您应该看看“mousemove”上的事件,方法是将其记录到控制台中。那里可能有一个属性表明鼠标的状态,就像按键事件有一个属性,告诉你是否按下了shift键。但是这可能不是跨浏览器兼容的。

3

您可以查看MouseEvent.which属性。

function mouseMove(ev) { 
    if(ev.which==1) { 
     console.log('mouse down state with left click'); 
    } else if(ev.which==3) { 
     console.log('mouse down state with right click'); 
    } else { 
     console.log('mouse update'); 
    } 
} 
+0

非常感谢你真的为我工作。 – vusan

+1

对不起,但现在我不使用这个解决方案,因为它不会解决IE。还有其他的想法吗? – vusan

+2

Bzzt。 Mousevent.which属性告诉哪个按钮导致了最近的'mousedown'或'mouseup'事件。它只是复制到'mousemove'事件中。它并不反映鼠标按钮的当前状态。它的名字似乎表明它确实如此 - 我热切地希望它做到了 - 但事实并非如此。 (这不仅仅是一个IE或浏览器版本问题:-) –