JQuery live scroll event on mobile (работа вокруг)
Возрастная проблема:
Как запустить событие прокрутки, когда пользователь прокручивает элемент, находясь на мобильном сайте или приложении (веб-представление).
Все, что я ищу - это доступ к правильному значению scrollTop()
, когда пользователь прокручивает мою страницу на мобильном устройстве, а не получает ее, когда пользователь останавливается.
Я уверен, что где-то есть обходной путь, если я прав, это ограничение устанавливается iOS, и в течение последних нескольких лет обсуждалось это.
Я пробовал реализовывать собственные эмуляторы прокрутки, но ни один из них, похоже, не работает так, как я хочу, и, честно говоря, кажется, что это излишний, если все, что я действительно хочу, - это постоянный scrollTop()
, пока пользователь прокручивается.
В настоящее время я думаю о том, чтобы начать счетчик на touchStart и остановить его на touchStop, но что-то говорит мне, что я трачу свое время.
Любые помощи ребятам?
Ответы
Ответ 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/...