Próbuję utworzyć stronę dla urządzeń mobilnych, która wykrywa pozycję scrollTop
i przewija do góry strony, jeśli scrollTop
jest mniejsza niż połowa wysokości dokumentu lub przewiń do dołu, jeśli nie.Nie można wypalić Touchend po touchmove
udało mi się osiągnąć to, że za pomocą:
var ScrollTimeout;
$(window).on('scroll',function(){
clearTimeout(ScrollTimeout);
ScrollTimeout = setTimeout(scrollToTopOrBottom,200);
});
Problemem jest to, że pożary limitu czasu, gdy użytkownik przestał przesuwać ale wciąż ma palec na ekranie.
Potem pracowałem z wydarzeniem touchend
i było świetnie.
$(document).on('touchend',function(){
scrollToTop();
});
Użytkownik może przestanie się poruszać (palcem jeszcze na ekranie), a następnie dalej przesuwać bez wywoływania funkcji scrollToTopOrBottom()
.
Problemem jest to, że zdarzenie jest incosistent między przeglądarkami:
W niektórych przeglądarkach (Maxthon i Android), zdarzenie touchend
pracował zgodnie z przeznaczeniem, ale w Opera Mobile i Chrome, zdarzenie touchend
nie pożary. Wyjaśnienie tego jest następujące: touchend
doesn't fires because touchcancel
has been fired before.
Próbowałem to
$(document).on('touchmove',function(e){
e.preventDefault();
});
i pomyślnie uniknąć wyzwalania touchcancel
, ale niestety również unikać naturalne zachowanie przewijania.
Czy ktoś wie, jak można to osiągnąć? Nie mam pomysłów.
Dzięki.
To zadziałało dla mnie. –
Działa doskonale! Dzięki – Logic1
wypróbowałem wszystko, aby touchchety działały poprawnie na Androidzie 4.4, to była jedyna rzecz, która pomogła! Dzięki! – mls3590712