2011-06-29 13 views
9

¿Cómo puedo obtener la posición del ratón cuando me desplazo hacia abajo o hacia arribaObtener la posición del ratón en desplazamiento

probé este

$(document).mousemove(function(event) { 
    captureMousePosition(event); 
}).scroll(function(event) { 
    xMousePos = event.pageX + $(document).scrollLeft(); 
    yMousePos = event.pageY + $(document).scrollTop(); 
    window.status = "x = " + xMousePos + " y = " + yMousePos; 
}); 

function captureMousePosition(event){ 
    xMousePos = event.pageX; 
    yMousePos = event.pageY; 
    window.status = "x = " + xMousePos + " y = " + yMousePos; 
} 

pero aún no ha trabajaba, quiero la posición exacta del ratón en relación con la parte superior de la página no con respecto a la ventana (marco)

+0

si FF tu script funciona – bravedick

+0

qué versión ??? Probé en ff5 no funcionó – Varun

+0

FF5. Entonces, ¿necesita una posición relativa al documento o relativa a la ventana? su script da pos relativo al documento. así que si la altura de la ventana = 2000, altura del documento = 5000, en el final de la secuencia de comandos de la página dará 5000, no 2000. – bravedick

Respuesta

7

nos no puede obtener la posición actual del ratón sobre el desplazamiento sólo puede obtener la cantidad que desplaza con respecto a la última posición por lo cambió a:

var xMousePos = 0; 
var yMousePos = 0; 
var lastScrolledLeft = 0; 
var lastScrolledTop = 0; 

$(document).mousemove(function(event) { 
    captureMousePosition(event); 
}) 

    $(window).scroll(function(event) { 
     if(lastScrolledLeft != $(document).scrollLeft()){ 
      xMousePos -= lastScrolledLeft; 
      lastScrolledLeft = $(document).scrollLeft(); 
      xMousePos += lastScrolledLeft; 
     } 
     if(lastScrolledTop != $(document).scrollTop()){ 
      yMousePos -= lastScrolledTop; 
      lastScrolledTop = $(document).scrollTop(); 
      yMousePos += lastScrolledTop; 
     } 
     window.status = "x = " + xMousePos + " y = " + yMousePos; 
    }); 
function captureMousePosition(event){ 
    xMousePos = event.pageX; 
    yMousePos = event.pageY; 
    window.status = "x = " + xMousePos + " y = " + yMousePos; 
} 

funcionó y está trabajando en múltiples navegadores ....

de todos modos gracias

todos :)

+0

¿Puedes dar más información sobre por qué' "no podemos obtener la posición actual del mouse en el desplazamiento "'? Muchas gracias @Varun. –

+0

@AlanDong Porque el evento "scroll" está dando 'undefined' al tratar de obtener' e.pageX' o 'e.pageY' en lugar de otros eventos. –

+0

@Varun Funcionó perfectamente. Estaba intentando mover un div basado en el evento 'mousemove'. Pero 'onscroll' no pude acceder a los coords de mouse hasta que implementé tu código. ¡Muchas gracias! – protoEvangelion

-1

yo no probé este intenta:

$(document).ready(function(){ 
    $(document).scroll(function(e){ 
     $('#status').html(e.pageX +', '+ e.pageY); 
    }); 
}); 
+0

es lo mismo que estoy haciendo 'e.pageX + ',' + e.pageY' no funciona – Varun

Cuestiones relacionadas