Espero rastrear la posición del cursor del mouse, periódicamente cada t ms. Entonces, esencialmente, cuando se carga una página: este rastreador debería iniciarse y (por ejemplo) cada 100 ms, debería obtener el nuevo valor de posX y posY e imprimirlo en el formulario.
Intenté el siguiente código, pero los valores no se actualizan, solo los valores iniciales de posX y posY aparecen en los cuadros de formulario. ¿Alguna idea sobre cómo puedo poner esto en funcionamiento?
<html>
<head>
<title> Track Mouse </title>
<script type="text/javascript">
function mouse_position()
{
var e = window.event;
var posX = e.clientX;
var posY = e.clientY;
document.Form1.posx.value = posX;
document.Form1.posy.value = posY;
var t = setTimeout(mouse_position,100);
}
</script>
</head>
<body onload="mouse_position()">
<form name="Form1">
POSX: <input type="text" name="posx"><br>
POSY: <input type="text" name="posy"><br>
</form>
</body>
</html>
javascript
Hari
fuente
fuente
event
objeto cuando se llame a la función por segunda vez. Probablemente deberías escuchar algún evento que usarsetTimeout
.window.event
seráundefined
onull
. Si no hay evento, no hayevent
objeto.Respuestas:
La posición del mouse se informa sobre el
event
objeto recibido por un controlador para elmousemove
evento, que puede adjuntar a la ventana (el evento burbujea):(Tenga en cuenta que el cuerpo de eso
if
solo se ejecutará en IE antiguo).Ejemplo de lo anterior en acción : dibuja puntos mientras arrastra el mouse sobre la página. (Probado en IE8, IE11, Firefox 30, Chrome 38.)
Si realmente necesita una solución basada en temporizador, combine esto con algunas variables de estado:
Hasta donde sé, no puede obtener la posición del mouse sin haber visto un evento, algo que esta respuesta a otra pregunta de Stack Overflow parece confirmar.
Nota al margen : si va a hacer algo cada 100 ms (10 veces / segundo), intente mantener el procesamiento real que realiza en esa función muy, muy limitado . Eso es mucho trabajo para el navegador, particularmente los más antiguos de Microsoft. Sí, en las computadoras modernas no parece mucho, pero están sucediendo muchas cosas en los navegadores ... Entonces, por ejemplo, puede realizar un seguimiento de la última posición que procesó y abandonar el controlador inmediatamente si la posición no ha cambiado. t cambiado.
fuente
Aquí hay una solución, basada en jQuery y un detector de eventos de mouse (que es mucho mejor que un sondeo regular) en el cuerpo:
fuente
Abra su consola ( Ctrl+ Shift+ J), copie y pegue el código anterior y mueva el mouse en la ventana del navegador.
fuente
Creo que estamos pensando demasiado en esto,
fuente
document.body.addEventListener("mousemove", function (e) {})
es la forma de hacer esto, en su código de JavaScript en lugar de en el htmlLo que creo que solo quiere saber es la posición X / Y del cursor que por qué la respuesta es tan complicada.
fuente
Código basado en ES6:
Si necesita aceleración para mover el mouse, use esto:
aquí hay un ejemplo
fuente
Independientemente del navegador, las siguientes líneas me funcionaron para obtener la posición correcta del mouse.
event.clientX - event.currentTarget.getBoundingClientRect().left event.clientY - event.currentTarget.getBoundingClientRect().top
fuente
Si solo desea seguir el movimiento del mouse visualmente:
fuente
No tengo suficiente reputación para publicar una respuesta de comentario, pero tomé la excelente respuesta de TJ Crowder y definí completamente el código en un temporizador de 100 ms . (Dejó algunos detalles a la imaginación).
Gracias OP por la pregunta, y TJ por la respuesta. Ambos son de gran ayuda. El código está incrustado a continuación como un espejo de isbin.
fuente
Aquí hay una combinación de los dos requisitos: rastrear la posición del mouse, cada 100 milisegundos:
Esto rastrea y actúa en la posición del mouse, pero solo cada período de milisegundos.
fuente
Solo una versión simplificada de las respuestas de @TJ Crowder y @RegarBoy .
Menos es más en mi opinión.
Consulte el evento onmousemove para obtener más información sobre el evento.
Hay un nuevo valor de
posX
yposY
cada vez que el mouse se mueve de acuerdo con las coordenadas horizontales y verticales.fuente