2011-02-14 9 views
5

Jquery-móvil es compatible con estos eventos:¿Cómo obtener la posición/coordenadas de un evento tap con jquery-mobile?

http://jquerymobile.com/demos/1.0a3/docs/api/events.html

¿Cómo consigo la posición del evento del grifo (por ejemplo, dentro de una imagen) en un dispositivo móvil?

$('#myimg').bind('tap', function(e){ 
    var x = ???; 
    var y = ???; 

    alert([x, y]); 
}) 
+0

no estoy seguro pero es e.pageX, e.pageY en base de web jquery – Val

+0

Lo sé, es por eso que pregunté, no funciona ;-) También verifiqué la fuente jquery-mobile pero no he descubierto cómo se supone que funciona Simplemente no puedo imaginar que las coordenadas no se proporcionarán en el evento. – Erik

+0

debería funcionar como en todos los eventos, por lo que esperaba que e.pageX o e.mouseX funcionaran. – naugtur

Respuesta

0

No sé sobre jQuery Mobile pero yo sólo probé una página de prueba de la lona que tengo en mi iPhone ... que acaba de hacer clic y dibuja círculos y trabaja muy bien.

y sólo tiene que utilizar e.pageX y e.pageY como la gente por encima de dicho

function getCursorPosition(e) { 
    var x; 
    var y; 
    if (e.pageX != undefined && e.pageY != undefined) { 
    x = e.pageX; 
    y = e.pageY; 
    } 
    else { 
    x = e.clientX + document.body.scrollLeft + 
      document.documentElement.scrollLeft; 
    y = e.clientY + document.body.scrollTop + 
      document.documentElement.scrollTop; 
    } 
    x -= Ccanvas.offsetLeft; 
    y -= Ccanvas.offsetTop; 

    var Point = { 
     x: x, 
     y: y 
     }; 
    return Point; 
} 
3

La razón por la que no obtendrá pageX & pageY es que se obtiene el evento touchcancel que no contiene ningún información de coordenadas (no es táctil, después de todo). No es un toque o clic real, es un evento táctil que no se movió (más allá de un umbral) y fue lo suficientemente rápido.

Me encontré con lo mismo al utilizar el complemento touchswipe para jQuery y tuve que solucionarlo almacenando las coordenadas en el evento de inicio táctil y recuperándolo en la cancelación para poder extraer las coordenadas.

Usted tendrá que guardar estos queridos en el evento de inicio ("vmousedown" en jQuery Mobile?):

event.touches[0].pageX 
    event.touches[0].pageY 

Además, en un dispositivo móvil, se debe multiplicar las coordenadas por window.devicePixelRatio para obtener la precisión posición en la pantalla.

+0

Gracias, lo intentaré – Erik

+0

¿Cuál es la idea de la matriz de toques? Usted almacena las coordenadas allí, pero ¿cómo las recupera durante el evento tap? –

Cuestiones relacionadas