jQuery (Swipe vs. Touch) pageX и pageY продолжают возвращать 0

Я играю с событиями touchstart и touchend на моем iPhone. Я создал образец страницы с div, который, если вы коснетесь его и прокрутите страницу, он должен вернуть координаты y начальной и конечной позиций.

ссылка: http://jsbin.com/ibemom/2

jQuery:

var touchStartPos;

$('.theDiv')
  .bind('touchstart', function(e){
    touchStartPos = e.pageY;
  })
  .bind('touchend', function(e){
    alert(touchStartPos + ' | ' + e.pageY)
  })   

Однако, когда я загружаю эту страницу на свой iPhone, предупреждение продолжает сообщать обоим значениям как нулевые. Кто-нибудь видит что-то не так с тем, что у меня есть?

ОБНОВЛЕНИЕ:

Я наткнулся на этот фрагмент кода в проекте jQuery Mobile: https://github.com/jquery/jquery-mobile/issues/734

Из него вышло замечание:

 // (in iOS event.pageX and event.pageY are always 0 )

Здесь не сказано почему , но, по крайней мере, я нашел кого-то еще, кто видит то же самое. Покопаемся в образце кода на этой странице, чтобы увидеть, есть ли решение.

ОБНОВЛЕНИЕ II:

Итак, после просмотра примера кода в приведенной выше ссылке, похоже, будет возвращено реальное значение:

e.originalEvent.touches[0].pageY

Загвоздка в том, что теперь я понимаю, что это не совсем то, что мне нужно. Он возвращает смещение по оси Y области, которой я коснулся в объекте, к которому я прикрепил событие В ОТНОШЕНИИ HTML-ДОКУМЕНТА ... а не в окне браузера.

Моя цель - выяснить, где на экране касание началось, а где закончилось ... и затем сравнить значения. Если они немного отличаются, то мы предполагаем, что было выполнено смахивание ... а не касание.

ОБНОВЛЕНИЕ III:

Я также нахожу ссылки на эти примеры:

e.originalEvent.touches[0].pageX

event.targetTouches[0].pageY

Хотя я тоже не могу заставить их работать. Оба возвращают неопределенные ошибки.

ОБНОВЛЕНИЕ IV:

Похоже, одним из решений является отслеживание смещения () в самом документе. Я могу применить событие touchend к документу, а затем проверить его смещение.

Проблема в том, что мое событие touchend сначала срабатывает для элемента на моей странице, а ЗАТЕМ оно запускает его в документе (всплытие) . Поэтому я не могу на самом деле определить, было ли это прикосновением или смахиванием, ПРЕЖДЕ чем мне нужно выяснить, что делать с событием touchend объектов.

Все еще обдумываю это ...

18
задан DA. 18 August 2011 в 18:47
поделиться