jQuery mousemove() вызывается, даже если мышь неподвижна.

Для меня, если я попробую этот пример: http://jsfiddle.net/bY3CC/3/, Текст «перемещено мышью» появляется, даже если я наведу указатель мыши на документ, а затем оставлю его неподвижным...

Почему это? ;\

Кроме того, похоже, что сообщение появляется только в Chrome....

Странно :-с


person XCS    schedule 02.01.2011    source источник
comment
вероятно, связано с: stackoverflow.com/a/17819113/2464167   -  person argaz    schedule 28.07.2015


Ответы (2)


Глобальный объект event нестандартен, поэтому он существует только в некоторых браузерах, таких как IE (возможно, только в режиме совместимости) и, по-видимому, в Chrome.

Примите объект события в качестве параметра обработчика события:

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/

person Guffa    schedule 02.01.2011
comment
Хорошо, это решило половину проблемы. Теперь, почему появляется сообщение, если мышь неподвижна? - person XCS; 02.01.2011
comment
У меня сейчас не установлен Chrome, но я протестировал его в Firefox 3, IE 9, Opera 11 и Safari 4, и они не вызывают событие, когда мышь неподвижна. Возможно, Chrome делает что-то странное, или у вас есть какой-то плагин или что-то еще, что может вызвать это? - person Guffa; 02.01.2011
comment
Это также происходит при установке Chrome (бета-версия 9.0.597.19). Как ни странно, печать текущей позиции пикселя мыши показывает, что она всегда находится в одной и той же позиции. - person AbdullahC; 02.01.2011
comment
Это странно, после перезапуска Chrome он работал отлично... Вот над чем я все равно работал: D bit.ly/ hRpiqr - person XCS; 02.01.2011
comment
@Guffa, почему, когда вы нажимаете на документ, он тоже показывает сообщение? мышь все еще в том же положении? - person msm.oliveira; 04.06.2015
comment
@msm.oliveira: Потому что вы на самом деле немного двигаете мышью при нажатии. Щелкать, вообще не двигая мышь, можно, но это непросто. Обратите внимание, что движение мыши может быть слишком маленьким для перемещения указателя мыши на пиксель, но оно все равно регистрируется как движение. - person Guffa; 04.06.2015

Сохраните координаты x, y

$(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/>');
    };
})());
person user2106480    schedule 26.02.2013