scrollTop no funciona en móviles Android

Estoy desarrollando la funcionalidad de chat para la aplicación móvil Andriod, para este uso de la interfaz de tema móvil jQuery y jQuery.

Mi problema es que estoy tratando de usar la función scrollTop () para agregar nuevos mensajes en la parte inferior. La función scrollTop () funciona bien en todos los navegadores, pero en Andriod no funciona … cualquiera tiene alguna idea al respecto. Aquí está el código HTML:

 

Aquí está el código jQuery para scrollbuttom:

 $("#chatSendButton").click(function() { var mes = $("#messageText").val(); $("#incomingMessages").append("
" +'Admin'+ ":" +" "+ mes + "
"); $("#incomingMessages").scrollTop($("#incomingMessages")[0].scrollHeight); });

Parece que este problema solo ocurre cuando la propiedad de desbordamiento está configurada para ‘desplazarse’ (que es la única vez que nos preocupamos por ello). Una solución que funcionó para mí fue primero establecer el desbordamiento en ‘oculto’, establecer el scrollTop y luego volver a establecer el desbordamiento en ‘scroll’.

EDITAR: He encontrado que si establece el estilo “superior” para, digamos, -120, debería “desplazar” el div hacia abajo por esos 120px.

Aquí un ejemplo de HTML (perdón por todos los estilos en línea):

 

Message 1

Message 2

Message 3

Message 4

Message you want to see right now

Message 5

Message 6

Message 7

Message 8

Y la parte de Javascript:

  

He probado esto en las versiones 3.0 y 4.0 de Android (debo decir que estaba en el emulador).

¡Espero que esto ayude!

MENSAJE ORIGINAL:

Scroll top parece no estar funcionando en algunas versiones de Android como se informa aquí , y no hay una respuesta definitiva de Google sobre esto (parece que principalmente 3.0 y 4.0 tienen este problema, 2.3 y más abajo o 4.1 no parece estar afectado).

Lo siento, pero parece que no hay solución ahora para este error.

Uso lo siguiente para el soporte de Android cuando uso scrollTop (). Ha funcionado bastante bien como una solución universal en mi experiencia.

El CSS:

 .androidFix { overflow:hidden !important; overflow-y:hidden !important; overflow-x:hidden !important; } 

El JS:

 $(yourSelector).addClass("androidFix").scrollTop(0).removeClass("androidFix"); 

Una solución para mí fue:

 window.location.hash = '#element' + currentItem; 

Puedes saltar al elemento con un id específico.

Sé que esa no es la solución para todos, compra, quizás pueda ayudar a alguien.

Lo siento, no tengo una respuesta y aún no tengo el nivel de reputación necesario para dejar un comentario, así que tengo que publicar esto como una “respuesta”. He pasado mucho tiempo trabajando en esto tratando de encontrar una solución que no haya encontrado. He creado una página de prueba que da una idea de lo que está pasando.

http://jsfiddle.net/RyLek/embedded/result/ <- DIV configurado para desbordar automáticamente http://jsfiddle.net/RyLek/2/embedded/result/ <- DIV configurado para desbordar el desplazamiento

El problema es que la propiedad .scrollTop no se actualiza a la posición actual en un DIV cuando se desplaza hacia abajo. Además, cuando establece la propiedad scrollTop, en realidad no actualiza la posición de desplazamiento DIV.

En respuesta al comentario “Aitor Calderón” realizado en la respuesta anterior. Intenté configurar la propiedad de desbordamiento para desplazarse (ver el ejemplo anterior) y eso no tiene ningún efecto.

También he probado algunos navegadores de terceros en el mercado, como Maxthon y Dolphin, que también tienen este problema. Si está ejecutando un dispositivo ICS con Android 4.0, puede descargar el navegador Google Chrome de Google Play Store en el que funciona la propiedad scrollTop. Esa no es una opción para mí, ya que nuestra empresa tiene en su mayoría dispositivos con forma de panal que no son compatibles con este navegador.

Aquí hay una pregunta que publiqué sobre esto la semana pasada sobre este tema: jQuery scrollTop () no funciona en el desplazamiento de DIV en los navegadores móviles, ¿alternativas? La respuesta fue tratar de implementar esto en CSS, que no he logrado realizar.

Necesitaba desplazarme desde la parte superior de la página a un elemento específico, y .offset era la solución para mí para Android e iOS. .scrolltop solo funcionaba en iOS.

 $('html, body').animate({scrollTop: $('#element').offset().top + 20}, 10);