2013-09-30 3 views
9

Я пытаюсь создать страницу для мобильных устройств, которая обнаруживает позицию scrollTop и прокручивает ее до верхней части страницы, если scrollTop ниже половины высоты документа или прокрутите вниз, если ее нет.Touchend не срабатывает после touchmove

я добился того, что с помощью этого:

var ScrollTimeout; 
$(window).on('scroll',function(){ 
    clearTimeout(ScrollTimeout); 
    ScrollTimeout = setTimeout(scrollToTopOrBottom,200); 
    }); 

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

Тогда я работал с событием touchend, и это было здорово.

$(document).on('touchend',function(){ 
    scrollToTop(); 
    }); 

Пользователь может прекращает прокрутку (с пальцем все еще на экране), а затем продолжить прокрутку, не вызывая функцию scrollToTopOrBottom().

Проблема заключается в том, что событие incosistent между браузерами:

В некоторых браузерах (Maxthon и Android), то touchend событие работал как задумано, но в Opera Mobile и Chrome, то touchend событие не пожары. Объяснением для этого является то, что touchend doesn't fires because touchcancel has been fired before.

Я попробовал этот

$(document).on('touchmove',function(e){ 
    e.preventDefault(); 
    }); 

и успешно избегал срабатывания touchcancel, но несчастию также избежать естественного поведения прокрутки.

Кто-нибудь знает, как это можно достичь? У меня совершенно нет идей.

Спасибо.

ответ

8

попытаться приложить прослушиватель и коснуться и touchcancel.

$(document).on('touchend touchcancel', function() { 
    doSomthing(); 
}); 
+0

Это сработало для меня. –

+0

Работал отлично! Спасибо – Logic1

+0

попробовал все, чтобы заставить touchhends правильно работать на Android 4.4, это было единственное, что помогло! Благодаря! – mls3590712

1

Я написал прокладку для решения этой проблемы. Возможно, вам немного поздно, но это может помочь кому-то. https://github.com/TNT-RoX/android-swipe-shim

+0

Не работает на браузере android 4.4.4 по умолчанию .. даже не вызывает события (т.е. swipeUp) – jfaron

+0

Работает, но события прокрутки зависят от прокрутки контейнера. Я думаю, что прокрутка вручную предпочтительнее. –

Смежные вопросы