2011-12-02 11 views
5

Algunas preguntas aquí:iOS Javascript DOM "¿Congelación?"

  1. ¿Hay alguna forma para mantener el IOS se congele javascript en la página mientras se desplaza?

  2. ¿IOS congela JavaScript cuando está en otra pestaña o si cambia de aplicación?

  3. ¿Hay alguna otra limitación importante de javascript en iOS?

Respuesta

1

Para responder a la tercera pregunta, una limitación de tamaño decente es que sometimes innerHTML just plain doesn't work. De la respuesta aceptada:

Sucede cuando la CPU del teléfono está muy ocupada (digamos 100%). Entonces, el motor de renderizado a veces se olvida de la configuración interna de HTML.

La solución incluida en mi proyecto unify es comprobar si hay un elemento en childNodes, de lo contrario aplicarlo de nuevo.

+1

[John McKerrell blogueó sobre el error interno de Mobile Safari] (http://blog.johnmckerrell.com/2007/03/07/problems-with-safari-and -innerhtml /) camino atrás en 2007, también. – sdleihssirhc

6

iOS 6.x suspende todos los temporizadores de eventos en respuesta a eventos táctiles como el desplazamiento y tiene la tendencia a no volver a iniciar todos los temporizadores una vez que se completa el evento. Es un error conocido de iOS 6 que es súper molesto. Se rompe bastante paralaje y esas cosas. Algunas personas han recurrido a la construcción de su propia funcionalidad de desplazamiento.

Aquí hay otro StackOverflow sobre el mismo tema: iOS 6 safari, setInterval doesn't get fired

y otro: setInterval pauses in iphone/ipad (mobile Safari) during scrolling

y aquí es lo que más se aproxima a un informe de error en él (Apple no hace error informes públicos para mantener la ilusión de la perfección, por lo que los desarrolladores crearon su propio sitio de errores): http://openradar.appspot.com/12756410

Este código descongelará los temporizadores que están rotos/perdidos/destruidos por iOS durante un desplazamiento de página: https://gist.github.com/ronkorving/3755461

Este es otro intento de fijar la congelación: iOS 6 js events function not called if has setTimeout in it

Por desgracia, no hay nada que puede hacer para disparar acontecimientos cuando la página de desplazamiento. Como desvanecer un enlace de volver a la parte superior cuando se desplaza hacia arriba en la página. Cuando se trata de desplazarse, iOS6 es incapaz de frotarse la barriga y darle palmadas en la cabeza. (iOS5 funciona bien, por cierto. Esto es una regresión)

+0

Hay otra solución que se menciona aquí: http://stackoverflow.com/questions/10482227/javascript-dom-changes-in-touchmove-delayed-until-scroll-ends-on-mobile-safari -> crea tu propia función de desplazamiento. .. – chaenu

Cuestiones relacionadas