Определить, прокручивает ли в данный момент веб-страницу на Android - PullRequest
7 голосов
/ 21 июля 2010

Я пытаюсь определить, когда пользователь завершил прокрутку веб-страницы с помощью JavaScript на Android. У меня есть скрипт, работающий на iPhone, и мне кажется правильным, что он должен работать на Android. Во всяком случае, фрагмент:

previous = pageYOffset;
interval = setInterval(function() {
    //Has scrolling stopped?
    if(previous == pageYOffset) {
        clearInterval(interval);
        //DO SOMETHING AFTER SCROLL COMPLETE
    } else {
        previous = pageYOffset;
    }
}, 200);

Основная идея, опрашивать страницу YOffset каждые 200 мс. Если изменений не было, прокрутки не происходит. В противном случае продолжайте искать.

Как я уже сказал, это работает на iPhone, поэтому я предполагаю, что это как-то связано с Android, возможно, не обновляет pageYOffset во время прокрутки?

Любая помощь очень ценится!

Примечание. Я пошел по этому маршруту, поскольку не смог найти свойство isScrolling или событие типа scrollStop. Если я пропустил один, пожалуйста, скажите мне:)

Спасибо


Обновление: только что попытался использовать «прокрутку» событие, чтобы обнаружить это. Смешанные результаты Вот. На эмуляторе Android это было работал почти правильно, но был очень прерывистый на реальном телефоне (2.1 Sense Hero GSM), т.е. только 1 из 10 свитки были обнаружены.

Даже когда он «работал» над эмулятор это не стрелял свитком событие, когда вы прокручиваете «вверх», когда вы находятся в верхней части страницы (т.е. нажмите вверх, чтобы увидеть адресную строку). это это проблема, так как на самом деле страница был прокручен (изменил положение), но я не получаю событие.

Обратите внимание, iPhone, похоже, срабатывает и правильно определить событие (по крайней мере, в эмуляторе нет доступа к устройству на данный момент).

Есть идеи, ребята?


Обновление 2: появляется новое событие прокрутки работать (в той же степени, что и эмулятор (1.6 и 2.1)) на НЕКОТОРЫХ Устройства Android. Будем продолжать исследовать, чтобы попытаться сузить это вниз.

Тем не менее проблема «свитка» не срабатывает при прокрутке до Адресная строка. Возможно, придется иметь немного своего рода гибридное решение «свиток» обнаружение событий и опрос движения после прикосновения.

Ответы [ 3 ]

1 голос
/ 23 июля 2010

Может ли Использование события window.onscroll для обнаружения прокрутки страницы / кадра помочь ответить на ваш вопрос? Этот плакат использовал событие window.onscroll для обнаружения прокрутки, поэтому, возможно, вы сможете сохранить текущую позицию и запустить вызов setTimeout в обработчике событий. Если при обратном вызове вы находитесь в той же позиции, прокрутка остановилась бы.

1 голос
/ 09 августа 2010

Герой старательно вмешивается в случайные события и неправильно сообщает о них в javascript.Мы обнаружили ряд из них в нашей разработке для Android.Иногда кажется, что важно держать телефон (не шутка!)

0 голосов
/ 21 июля 2010

Может быть, вы могли бы использовать onScrollListener?

как определить, что Android ListView Scrolling остановлен?

Этот парень пытается обнаружить остановку, но я уверен, что он работает и для прокрутки.

...