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