Я играю с touchstart и touchhend на моем 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, предупреждение сообщает о том, что оба значения равны нулю. Кто-нибудь видит что-то не так с тем, что у меня есть?
UPDATE:
Я наткнулся на этот бит кода в проекте 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 области, к которой я коснулся объекта, который я привязал событие к IN RELATION TO HTML DOCUMENT... а не к окну браузера.
Моя цель - выяснить, где на экране началось касание, и где оно закончилось... и затем сравните значения. Если они немного разные, то мы представляем, что салфетки были выполнены... а не прикосновение.
ОБНОВЛЕНИЕ III:
Я также нахожу ссылки на эти примеры:
e.originalEvent.touches[0].pageX
event.targetTouches[0].pageY
Хотя я не могу заставить их работать. Оба возвращают ошибки undefined.
ОБНОВЛЕНИЕ IV:
Похоже, что одним из решений является отслеживание offset() для самого документа. Я могу применить событие touchhend к документу, а затем проверить его смещение.
Проблема с этим в том, что мое событие touchhend будет сначала запускаться на элементе на моей странице, а затем он загорится над документом (пузырь). Поэтому я не могу определить, было ли это прикосновение или проведите пальцем. Прежде чем мне нужно выяснить, что делать с объектами touchhend.
Еще обдумывая этот...