pasar - Determine la posición del mouse fuera de los eventos(usando jQuery)?
mousemove jquery (4)
Esta función reducirá el impacto en el rendimiento de la interfaz de usuario al obtener solo la posición del mouse en un intervalo:
function getMousePosition(timeoutMilliSeconds) {
// "one" attaches the handler to the event and removes it after it has executed once
$(document).one("mousemove", function (event) {
window.mouseXPos = event.pageX;
window.mouseYPos = event.pageY;
// set a timeout so the handler will be attached again after a little while
setTimeout(function() { getMousePosition(timeoutMilliSeconds) }, timeoutMilliseconds);
});
}
// start storing the mouse position every 100 milliseconds
getMousePosition(100);
Al igual que en la otra respuesta "Ahora puede usar window.mouseXPos
y window.mouseYPos
desde cualquier lugar".
Perderá un poco de precisión ya que el movimiento del mouse no se detectará durante los intervalos.
Necesito obtener la posición / coordenadas absolutas del mouse (X e Y) utilizando (preferiblemente) jQuery como en este tutorial pero fuera de cualquier evento de JavaScript. Gracias.
Esto comenzó como un comentario sobre la respuesta de Chetan Sastry , pero me di cuenta de que también podría valer la pena publicarlo como respuesta:
Sería cuidadoso al tener un evento mousemove
nivel de documentos, siempre en ejecución, incluso si solo está mousemove
para la posición del cursor. Esto es mucho procesamiento y puede atascar cualquier navegador, especialmente los más lentos como IE.
Un problema como este casi con seguridad plantea la cuestión de la decisión de diseño: si no necesita manejar un evento de mouse para sondear la posición del cursor, ¿realmente necesita la posición del cursor? ¿Hay una mejor manera de resolver el problema que estás tratando de resolver?
Editar: incluso en Safari 4, que es ( muy mousemove
) muy rápido , ese único evento mousemove
hace que cada interacción con esa página de tutorial sea notablemente agitada para mí. Piense en cómo afectará eso a las percepciones de los usuarios sobre su sitio o aplicación.
Imposible. Sin embargo, puede utilizar el mismo enfoque en el tutorial para almacenar la posición en una variable global y leerla fuera del evento.
Me gusta esto:
jQuery(document).ready(function(){
$().mousemove(function(e){
window.mouseXPos = e.pageX;
window.mouseYPos = e.pageY;
});
})
Ahora puede usar window.mouseXPos
y window.mouseYPos
desde cualquier lugar.
Intenté la soulution de @Chetan Sastry, pero no funciona. (Estoy usando jQuery 1.6.4). Cambio el código y luego trabajo ahora. Aquí está mi código. Espero que esto sea de ayuda.
$(document).ready(function(){
$(document).mousemove(function(e){
window.mouseXPos = e.pageX;
window.mouseYPos = e.pageY;
});
});