mouseenter javascript timeout onmousemove

mouseenter - mouseover javascript



¿Cómo puedo usar la sincronización de JavaScript para controlar en el mouse stop y en eventos de movimiento del mouse? (1)

Eso es complicado. Un poco de retoques resultó en esto:

function setupmousemovement() { var map1 = document.getElementById(''Map_Panel''); map1.onmousemove = (function() { var timer, timer250, onmousestop = function() { // code to do on stop clearTimeout( timer250 ); // I''m assuming we don''t want this to happen if mouse stopped timer = null; // this needs to be falsy next mousemove start }; return function() { if (!timer) { // code to do on start timer250 = setTimeout(function () { // you can replace this with whatever // code to do when 250 millis have passed }, 250 ); } // we are still moving, or this is our first time here... clearTimeout( timer ); // remove active end timer timer = setTimeout( onmousestop, 25 ); // delay the stopping action another 25 millis }; })(); };

El motivo por el que su código no funciona es que el mousemove se dispara repetidamente mientras el mouse se está moviendo y usted está comenzando nuevos tiempos de espera cada vez.

Entonces tengo un control (un mapa) en una página aspx. Quiero escribir algunos javascript para cargar la configuración de la siguiente manera:

  1. cuando el mouse se detiene en el control = algún código

  2. cuando el mouse se mueve = algún código (pero solo si el movimiento es más largo que 250 mil sec)

Esto funciona para activar el código en stop y luego en movimiento ...

function setupmousemovement() { var map1 = document.getElementById(''Map_Panel''); var map = document.getElementById(''Map1''); map1.onmousemove = (function() { var onmousestop = function() { //code to do on stop }, thread; return function() { //code to do on mouse move clearTimeout(thread); thread = setTimeout(onmousestop, 25); }; })(); };

Pero no puedo descifrar cómo introducir un retraso en el código en movimiento. Pensé que lo tenía con esto ...

function setupmousemovement() { var map1 = document.getElementById(''Map_Panel''); var map = document.getElementById(''Map1''); map1.onmousemove = (function() { var onmousestop = function() { //code to do on stop clearTimeout(thread2); }, thread; return function() { thread2 = setTimeout("code to do on mouse move", 250); clearTimeout(thread); thread = setTimeout(onmousestop, 25); }; })(); };

Pero no se comporta como pensé que sería. El movimiento "thread2" nunca se borra al detenerse. ¿Qué me estoy perdiendo?