2011-05-11 14 views
7

Tengo un objeto que imprime las posiciones xey del mouse en cada mousemove.¿Cómo funciona el desencadenamiento de mousemove en Javascript?

Es algo como esto:

$('#canvas').mousemove(function(e){ 
    $('#output').prepend(e.pageX + ',' + e.pageY); 
}); 

me he dado cuenta que cuando se mueve sobre el objeto que mas rapido que sólo imprime unas cuantas posiciones.

No estoy del todo contento de que lo haga (porque sería bastante exhaustivo hacer que haga algo por los cientos de píxeles que ha cruzado) pero me pregunto cómo funciona esto.

¿El evento mousemove está limitado a una determinada cantidad de activadores por segundo o qué?

(Por cierto: este fue probado en Chromium en Ubuntu Linux)

+3

Creo que realmente depende del navegador y equipo que se utiliza; más memoria/CPU más rápida probablemente === más iteraciones por 'x' tiempo. Entonces con ese ser como es, no dependería mucho de 'mousemove'. – Shaz

Respuesta

0

Creo que es sincrónica. No se activa para cada píxel en el que mueve el mouse, lo que significa que los eventos no están en cola.

Di si tienes algún código como este.

$('#canvas').mousemove(function(e){ 
//Some code which takes seconds to execute 
//All subsequent events won't be dispatched while this event handler is executing. 
}); 

Decir si mueves el mouse mientras se ejecutan los manejadores de eventos move del mouse. El controlador mousemove no se activará.

Aquí hay un ejemplo de controlador que tardará unos segundos en ejecutarse. ->http://jsfiddle.net/78Hf3/1/

Y uno que toma sólo unos pocos tiempo ->http://jsfiddle.net/78Hf3/2/

Cuestiones relacionadas