2011-01-02 16 views
11

Dla mnie, jeśli spróbuję tego przykładu: http://jsfiddle.net/bY3CC/3/ pojawi się tekst "przeniesiony myszą", nawet jeśli przesuję wskaźnik myszy nad dokumentem, a następnie pozostawiam go w spokoju ...jQuery mousemove() jest wywoływana, nawet jeśli mysz nadal jest

Dlaczego tak jest? ; \

A także, wydaje się, że komunikat pojawia się tylko w Chrome ....

Strange: -s

+0

prawdopodobnie związane z: http: // stackoverflow.com/a/17819113/2464167 – argaz

Odpowiedz

4

Światowy event obiekt jest nietypowy, więc istnieje tylko w niektórych przeglądarkach jak IE (może tylko w trybie dziwactwa) i podobno w Chrome.

zaakceptować obiekt zdarzenia jako parametr do obsługi zdarzeń:

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/

+0

OK, to rozwiązało połowę problemu. Dlaczego pojawia się komunikat, jeśli mysz jest nieruchoma? – Cristy

+0

Nie mam teraz zainstalowanej przeglądarki Chrome, ale przetestowałem ją w Firefoksie 3, IE 9, Opera 11 i Safari 4 i nie uruchamiają zdarzenia, gdy mysz jest nieruchoma. Być może Chrome robi coś dziwnego, czy może masz jakąś wtyczkę lub coś, co może to spowodować? – Guffa

+0

To samo dzieje się w mojej instalacji Chrome (wersja 9.0.597.19). Co dziwne, drukowanie aktualnej pozycji piksela myszy pokazuje, że zawsze znajduje się w tej samej pozycji. – AbdullahC

11

Store X, Y koordynuje

$(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/>'); 
    }; 
})()); 
Powiązane problemy