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.
- Detectar la rotación del teléfono Android en el navegador con JavaScript
- Ajuste el tamaño de fuente de Android WebView
- WebView hace que SQLiteDiskIOException
- ¿Cuánto apoyo hay para -webkit-overflow-scrolling: touch
- Habilitar posicionamiento fijo real en los navegadores de Android de Samsung
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.
- Androide / webkit text-overflow: los puntos suspensivos no funcionan
- "Flip" en los navegadores móviles de webkit que no sean de Safari?
- Comportamiento de audio HTML5
- Embedded Chromium o Webkit en la aplicación para Android
- ¿Por qué es el evento touchstart después de hacer clic?
- ¿Cómo actualizar manualmente el navegador android con el último webkit (nocturno)?
- El navegador Droid causa estragos en mi sitio
- Cómo simular: css activa pseudo clase en android en elementos no-link?
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.
- AddOnLayoutChangeListener vs addOnGlobalLayoutListener vs post (Runnable r)
- Prueba de funciones de visualización externa en Emulator JBMR1