En el teléfono móvil, detecte cuándo el usuario se desplaza "pasado" en la parte superior de la pantalla
Imagine una página web para móviles con una barra de navegación en la parte superior de la página.
Uso de javascript / jQuery Me gustaría ser capaz de detectar cuando un usuario se desplaza "pasado" en la parte superior de la pantalla.
- Cómo vincular tanto Mousedown y Touchstart, pero no responder a ambos? Android, JQuery
- Android inseguro: tel: con la aplicación phonegap
- Reproducción de un MP4 o MP3 desde un enlace dentro de un WebView de Android
- ¿Cómo identificar un teléfono o tableta Android en jquery?
- Cómo obtener el ancho de ventana correcto en el cambio de orientación para dispositivos Android, tabletas y móviles
Déjame intentar explicar: Imagina que la página web acaba de cargar y ves la barra de navegación en la parte superior de la pantalla. Ahora, usted pone su dedo en la pantalla y arrastrar hacia abajo . En un iPhone, se verá algo como:
Estoy buscando algo similar a lo siguiente:
$(document).ready(function () { $(window).scroll(function (event) { var y = $(this).scrollTop(); if(y < -20)) { //do something }
Desafortunadamente, esto no funcionará en los teléfonos Android porque no tienen el mismo comportamiento elástico que los iPhones:
- ¿Cómo soluciono las esquinas de `ui-corner-all` de JQuery Mobile?
- Eventos de clics no registrados
- Escucha tocar y arrastrar el valor y la función en consecuencia
- Cómo detectar sólo el navegador nativo de Android
- Encuentra el error de javascript que estoy recibiendo en phonegap en android
- Impresión de jquery móvil (phonegap) aplicación en android
- ¿Puede la página web estar consciente del teclado virtual android
- Cambiar el tamaño de la página móvil de Jquery durante la transición de página
Las malas noticias
Por lo tanto, vamos a empezar con las malas noticias: no hay manera de obtener la información que desea para nativa. ¿Por qué? Porque una vez que entras en la zona 'elástica' estás arrastrando todo el componente webview hacia abajo en lugar de sólo el contenido del documento como en tu pseudo código.
¿Qué significa esto prácticamente? Emulación o embalaje nativo
Emulación, las opciones
Así que tendrá que ejecutar su propia solución y tendrá que hacer un par de opciones. En primer lugar, si desea utilizar desplazamiento elástico debe tener en cuenta que esto está patentado por Apple Inc. en la patente US7469381 B2
. Por favor, revise cuidadosamente esta patente para asegurarse de que no infringirá (incluso si está creando una aplicación para iOS solo, esto no cambia nada).
En segundo lugar, la pregunta es si realmente quieres emular una experiencia nativa. Hay un gran vestíbulo contra la emulación de la experiencia nativa debido a 1) a creer que nunca puede ser lo suficientemente perfecto y 2) como los sistemas operativos y el navegador cambiar su código se mantendrá fuera de fecha y, por tanto, aspecto terrible / Causan un comportamiento / combinaciones totalmente inesperado.
En segundo lugar usted tendrá que decidir si desea para el mismo comportamiento elástico en android o si desea dar una más nativa como experice en android. Personalmente, creo que hace que para algunos UX excelente, por lo que no explicitamente desventajas de utilizar un efecto elástico, sin embargo, es algo que debe considerar con cuidado.
Emulación, los scripts
La mayoría de los scripts que proporcionan una emulación similar a lo que se desea son "pull to refresh" scripts. Dependiendo de tus deseos específicos, debes simplemente usar uno de esos scripts y modificarlos o usar algunos CSS para ocultar el mensaje dentro de ellos.
-
Hook.js – Emulación no perfecta de la experiencia nativa y utiliza el antiguo fondo de iOS, pero una opción bastante buena, sin embargo, para ocultar el spinner sólo uso
.hook-spinner{ display:none; }
-
IScroll.js – Código muy desarrollado y se comporta de manera excelente. La desventaja es que proporciona mucho más de lo que usted está buscando que puede ser una buena cosa o una mala cosa. Puede encontrar una implementación de ejemplo de pull para actualizar el comportamiento aquí , pero tenga en cuenta que es para una versión anterior de iScroll, en la última versión el ejemplo parece no haber sido implementado, pero debe ser bastante similar. Basta con mirar el código para ver cómo quitar el tirón para actualizar el mensaje.
-
JQuery scrollz – Sólo una opción más. Parece ser comparable a hook.js , pero tiene algunos iScroll como características también. Puede "eliminar" el mensaje especificando el
pullHeaderHTML
con cadenas HTML vacías.
Envoltura nativa
La alternativa, que estoy convencido de que no quieres hacer, pero sí quiero añadir para completar, es distribuir tu aplicación como una aplicación nativa, por ejemplo, en un teléfono. Sin embargo para conseguir este funcionamiento requeriría un número justo de cambios al código del phonegap sí mismo y no sería un acercamiento aconsejable (he desarrollado una vez una aplicación del phonegap usando los componentes nativos y las interacciones alrededor de él que acciona varios acontecimientos del javascript, aunque doable y que presenta Ciertas ventajas no es algo que yo aconsejaría).
Así que .. No estoy seguro de lo que usted necesita esto.
Si es para un ListView – puede anular onOverScrolled
Si necesitas esto para ScrollView, hay una forma de extenderlo también. No lo recuerdo ahora, pero si lo necesitas, lo puedo encontrar.
Si es para un WebView dentro de su aplicación – Estoy bastante seguro de que no es posible. La cantidad de control que tiene en la forma en que se procesan y manipulan las páginas web es limitada.
Si desea que el navegador Chrome / stock actúe de la misma manera que en iOS, no creo que sea posible a menos que obtenga el código del navegador y lo cambie usted mismo.
- Phonegap's FileTransfer.upload () lanzando el código de error 3 en Android
- Android StackOverflowError en ViewGroup.resetResolvedTextDirection