Подтвердить что ты не робот

JQuery live scroll event on mobile (работа вокруг)

Возрастная проблема: Как запустить событие прокрутки, когда пользователь прокручивает элемент, находясь на мобильном сайте или приложении (веб-представление).

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

Я уверен, что где-то есть обходной путь, если я прав, это ограничение устанавливается iOS, и в течение последних нескольких лет обсуждалось это.

Я пробовал реализовывать собственные эмуляторы прокрутки, но ни один из них, похоже, не работает так, как я хочу, и, честно говоря, кажется, что это излишний, если все, что я действительно хочу, - это постоянный scrollTop(), пока пользователь прокручивается.

В настоящее время я думаю о том, чтобы начать счетчик на touchStart и остановить его на touchStop, но что-то говорит мне, что я трачу свое время.

Любые помощи ребятам?

4b9b3361

Ответ 1

С помощью jQuery:

$('body').bind('touchmove', function(e) { 
    console.log($(this).scrollTop()); // Replace this with your code.
});

Это должно дать вам постоянный поток значения scrollTop, когда пользователь прокручивается, но будьте осторожны, поскольку он собирается срабатывать, даже когда пользователь просто держит палец на экране.

Обратите внимание: если вы используете jQuery >= 1.7, предпочтительным методом связывания является .on() вместо метода .bind(), который я использовал в моем примере. В этом случае мой пример будет

$('body').on({
    'touchmove': function(e) { 
        console.log($(this).scrollTop()); // Replace this with your code.
    }
});

Источник: https://github.com/dantipa/pull-to-refresh-js/blob/master/jquery.plugin.pullToRefresh.js

Ответ 2

возможно, вы могли бы взглянуть на то, как iScroll делает это в своем методе _move, который привязан к touchmove событие: https://github.com/cubiq/iscroll/blob/master/src/core.js#L152

Это немного сложно, но я уверен, что вы поймете это. Вы также можете просто использовать iScroll для начала и привязать к их событию scrollmove (я не уверен, как он вызвал iScroll 5, но он был onScrollMove в iScroll 4). that.y затем даст вам правильное значение.

Ответ 3

Мне нужно было пройти маршрут iScroll, чтобы сделать это. Я написал свою реализацию здесь: fooobar.com/info/59095/...