Gram z touchstart i touchend wydarzeń na moim iPhone. Zbudowałem przykładową stronę, która ma div, która po dotknięciu i przewinięciu strony powinna zwrócić współrzędne y pozycji początkowej i końcowej.jQuery (Swipe vs. Touch) pageX i pageY wracają 0
Link: http://jsbin.com/ibemom/2
jQuery:
var touchStartPos;
$('.theDiv')
.bind('touchstart', function(e){
touchStartPos = e.pageY;
})
.bind('touchend', function(e){
alert(touchStartPos + ' | ' + e.pageY)
})
Kiedy załadować tej strony na moim iPhone, jednak uderzył nieczysto i utrzymuje raportowanie zarówno wartości jak zero. Czy ktoś widzi coś złego w tym, co mam?
UPDATE:
natknąłem tego kawałka kodu w projekcie jQuery mobile: https://github.com/jquery/jquery-mobile/issues/734
Komentarz go z niej wyciągnął:
// (in iOS event.pageX and event.pageY are always 0)
To nie powiedzieć dlaczego to prawda, ale przynajmniej znalazłem kogoś, kto widzi to samo. Przeszukuje przykładowy kod na tej stronie, aby sprawdzić, czy istnieje rozwiązanie.
UPDATE II:
Cóż, po spojrzeniu przez przykładowy kod w linku powyżej, wygląda to tak powróci rzeczywistą wartość:
e.originalEvent.touches[0].pageY
Połów jest, ja sobie teraz sprawę, że nie jest całkiem potrzebuję. Zwraca przesunięcie Y obszaru, który dotknąłem w obiekcie, do którego dołączyłem, do IN RELACJI DO DOKUMENTU HTML ... zamiast do okna przeglądarki.
Moim celem jest dowiedzieć się, gdzie na ekranie dotyk zaczął i gdzie się zakończył ... a następnie porównać wartości. Jeśli są one trochę inne, to przypuszczamy, że wykonano przesunięcie ... raczej niż dotyk.
UPDATE III:
Ja również znaleźć odnośniki do tych przykładów:
e.originalEvent.touches[0].pageX
event.targetTouches[0].pageY
Choć nie wydaje się uzyskać te do pracy albo. Oba zwracają niezdefiniowane błędy.
UPDATE IV:
Wygląda na to jedno rozwiązanie jest śledzenie offsetu() w samym dokumencie. Mogę zastosować zdarzenie touchend do dokumentu, a następnie sprawdzić jego przesunięcie.
Problem polega na tym, że moje zdarzenie touchend najpierw uruchomi się na elemencie na mojej stronie, a następnie uruchomi go na dokumencie (bulgotanie). Tak więc nie jestem w stanie określić, czy to był dotyk czy przesunięcie, ZANIM potrzebuję dowiedzieć się, co zrobić w przypadku zdarzenia touchend.
Nadal rozważając ten jeden ...
dziwne, nie knwo o sieciach komórkowych, ale działa dobrze z kliknięć http://jsfiddle.net/nH2PU/ – Sinetheta
miałem nadzieję, że to nie będzie to dużo Stumper. ;) –
To samo zdarza się w Androidzie (2.2.2) – NoBugs