jQuery mousemove() is called even if the mouse is still

烈酒焚心 提交于 2019-11-28 00:07:17

问题


For me, if I try this example: http://jsfiddle.net/bY3CC/3/ the "mouse moved" text appears even if I move my mouse over the document and then I let it still...

Why's that? ;\

And also, seems like the message only appears in Chrome....

Strange :-s


回答1:


The global event object is non-standard, so it only exists in some browsers, like IE (perhaps only in quirks mode) and appearently in Chrome.

Accept the event object as a parameter to the event handler:

var last_moved=0;
$(document).mousemove(function(e){
  var now = e.timeStamp;    
  if (now - last_moved > 1000) {
    $('#messages').append('mouse moved<br/>');
    last_moved = now;
  }
});

jsfiddle.net/bY3CC/5/




回答2:


Store the x, y co-ordinates

$(document).mousemove((function(){
    var x,y;

    return function(evt){
        if(evt.clientX == x && evt.clientY == y){
            return;
        }
        x = evt.clientX;
        y = evt.clientY;
        $('#messages').append('mouse moved<br/>');
    };
})());


来源:https://stackoverflow.com/questions/4579071/jquery-mousemove-is-called-even-if-the-mouse-is-still

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!