Estoy jugando con touchstart y eventos touchend en mi iPhone. Construí una página de muestra que tiene div que si la tocas y desplazas la página, debería devolver las coordenadas y de las posiciones inicial y final.jQuery (Swipe vs. Touch) pageX y pageY siguen regresando 0
enlace: http://jsbin.com/ibemom/2
el jQuery:
var touchStartPos;
$('.theDiv')
.bind('touchstart', function(e){
touchStartPos = e.pageY;
})
.bind('touchend', function(e){
alert(touchStartPos + ' | ' + e.pageY)
})
Cuando me carga la página en mi iPhone, sin embargo, mantiene la alerta informar tanto los valores como cero. ¿Alguien ve algo mal con lo que tengo?
ACTUALIZACIÓN:
me encontré con este fragmento de código en el proyecto jQuery Mobile: https://github.com/jquery/jquery-mobile/issues/734
Un comentario que de ella sobresalía:
// (in iOS event.pageX and event.pageY are always 0)
no dice qué ese es el caso, pero al menos encontré a alguien más que ve lo mismo. Examinará el código de muestra en esa página para ver si la solución está allí.
ACTUALIZACIÓN II:
Bueno, después de mirar a través del código de ejemplo en el enlace de arriba, parece que esto va a devolver un valor real:
e.originalEvent.touches[0].pageY
El problema es, ahora me doy cuenta de que no es todo lo que necesito. Devuelve el desplazamiento en Y del área que toqué dentro del objeto al que adjunté el evento a EN RELACIÓN CON EL DOCUMENTO HTML ... en lugar de a la ventana del navegador.
Mi objetivo es determinar en qué parte de la pantalla comenzó el toque y dónde terminó ... y luego comparar los valores. Si son bastante diferentes, supongamos que se realizó un deslizamiento ... en lugar de un toque.
ACTUALIZACIÓN III:
también estoy encontrar referencias a estos ejemplos:
e.originalEvent.touches[0].pageX
event.targetTouches[0].pageY
A pesar de que parece que no puede conseguir los que trabajar bien. Ambos devuelven errores indefinidos.
ACTUALIZACIÓN IV:
Parece que una solución es derrota desplazada() en el propio documento. Puedo aplicar un evento touchend al documento y luego verificar su compensación.
El problema con esto es que mi evento touchend primero se activará en el elemento en mi página y ENTONCES lo disparará en el documento (burbujeo). Por lo tanto, no puedo determinar si fue un toque o deslizar ANTES de que deba averiguar qué hacer en el evento touchend de los objetos.
Aún ponderando éste ...
raro, no knwo sobre los móviles, pero funciona con clics http://jsfiddle.net/nH2PU/ – Sinetheta
Estaba esperando que esto no iba a ser esto mucho de un stumper. ;) –
Lo mismo parece estar sucediendo en Android (2.2.2) – NoBugs