Pregunta

Tengo una función en javascript que mueve un div en función de la posición del mouse. Esta función se establece en una función setInterval () y se ejecuta cada segundo. Necesito capturar la posición del mouse de esta manera:

function mousemov() {
  document.getElementById("myDiv").style.left = Event.clientX; //don't work
}

window.onload = function() {
  setInterval("mousemov()",1000);
}

Sal: no puedo usar el evento mousemove porque la función debe ejecutarse incluso si el mouse está detenido.

¡Gracias por ayudar!

¿Fue útil?

Solución

La única vez que puede acceder al objeto de evento es durante la ejecución de un controlador de eventos. Entonces, lo que debe hacer es crear un evento OnMouseMove en el documento y almacenar las coordenadas del mouse en un objeto accesible globalmente. Luego, puede acceder a estos valores desde cualquier otro lugar en su script para determinar la posición del mouse.

Aquí hay un ejemplo (no estás usando jQuery, así que este es el código DOM directo):

document.onmousemove = function(e) {
    var event = e || window.event;
    window.mouseX = event.clientX;
    window.mouseY = event.clientY;
}

function mousemov() {
    document.getElementById("myDiv").style.left = window.mouseX;
}

window.onload = function() {
    setInterval(mousemov, 1000);
}

Debería anotar que clientX y clientY no tienen en cuenta el desplazamiento. Deberá recuperar los desplazamientos de desplazamiento y aplicarlos a los valores devueltos.

Otros consejos

bueno, si escuchas el movimiento del mouse para el documento y guardas su ubicación, entonces, cuando quieras, por ejemplo. Cada segundo en su caso tiene la última posición de mouse registrada.

este es un ejemplo jquery

$(document).ready(function()
 {
  $().mousemove(function(e)
   {
       window.mouseX = e.pageX;
       window.mouseY = e.pageY;
  });
});

y tu función mousemove sería

function mousemov() { 
    document.getElementById("myDiv").style.left = window.mouseX;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top