Detectar si actualmente se desplaza una página web en Android

Estoy intentando detectar cuando un usuario ha terminado de desplazar una página web usando javascript en Android. El guión que tengo está trabajando en el iPhone y me parece correcto que funcione en Android. De todos modos, un fragmento:

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

La idea básica, encuesta el pageYOffset cada 200ms, si no había habido ningún cambio, entonces no hay desplazamiento sucediendo. De lo contrario, sigue buscando.

Como he dicho, esto funciona en el iPhone, por lo que estoy asumiendo que es algo que ver con Android posiblemente no actualizar pageYOffset durante un desplazamiento?

¡Cualquier ayuda es muy apreciada!

Nota: Fui para esta ruta ya que no pude encontrar una propiedad isScrolling o evento scrollStop. Si he pasado por alto uno, por favor dígame 🙂

Gracias


Actualización: Acabo de intentar utilizar el evento "scroll" para detectar esto. Resultados mixtos aquí. En el emulador de Android estaba funcionando casi correctamente, pero era muy intermitente en un teléfono real (2.1 Sense Hero GSM), es decir, sólo 1 en 10 rollos fueron detectados.

Incluso cuando estaba 'trabajando' en el emulador no estaba disparando el evento de desplazamiento cuando se desplaza hacia arriba cuando está en la parte superior de la página (es decir, para subir la barra de direcciones). Este es un problema ya que la página ha sido desplazada (posición cambiada) pero no estoy recibiendo el evento.

Tenga en cuenta, el iPhone parece disparar y detectar el evento correctamente (al menos en el emulador, no hay acceso al dispositivo en este momento).

¿Ideas chicos?


Actualización 2: El nuevo evento 'scroll' parece funcionar (en la misma medida que el emulador (1.6 y 2.1)) en algunos dispositivos Android. Seguiremos investigando para intentar reducir esto.

Aún así, el tema de "desplazamiento" no se activa cuando se desplaza hasta la barra de direcciones. Podría tener que tener algún tipo de solución híbrida de "desplazamiento" de detección de eventos y movimiento de sondeo después de un toque.

El héroe se interpone propiamente en eventos ocasionales y no los reporta correctamente a javascript. Descubrimos una serie de éstas en nuestro desarrollo de Android. A veces parece importar la forma en que usted está sosteniendo el teléfono (no es broma!)

¿ Utilizar el evento window.onscroll para detectar desplazamiento de página / marco ayuda a responder a su pregunta? Ese póster usó el evento window.onscroll para detectar el desplazamiento, así que tal vez usted puede puede guardar la posición actual y disparar una llamada setTimeout en el controlador de eventos. Si cuando la llamada vuelve a suceder, usted está en la misma posición, entonces el desplazamiento habría parado.

Tal vez usted podría usar onScrollListener?

Cómo detectar Android ListView Scrolling se detuvo?

Este chico está tratando de detectar una parada, pero estoy seguro de que funciona para desplazarse también.

  • ¿Qué eventos de DOM están disponibles para WebKit en Android?
  • Android 2.3.4 - La contraseña de tipo de entrada de HTML tiene frontera en el enfoque
  • WebKit para Android y JavaServerFaces
  • El navegador de Android se bloquea en las llamadas de Ajax, cuando se define la metaetiqueta de la ventana de visualización
  • ¿Qué formatos de audio son compatibles con el navegador android?
  • Android: NullPointerException en la vista web
  • ¿Cómo consigo que el navegador WVGA Android deje de escalar mis imágenes?
  • Consumo de memoria de webkit móvil
  • La navegación privada está obsoleta en Android WebView desde la API 17. ¿Cuál es la alternativa?
  • OnPageFinished no disparar correctamente al procesar la página web
  • Cargando el paquete html + recursos en la vista web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.