iOS Javascript DOM "¿Congelación?"

Algunas preguntas aquí:

  1. ¿Hay alguna forma de evitar que iOS congele el javascript en la página mientras se desplaza?

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

  3. ¿Hay otras limitaciones importantes de JavaScript en iOS?

iOS 6.x suspende todos los timeres de events en respuesta a events táctiles como el desplazamiento y tiene una tendencia a no volver a iniciar todos los timeres una vez que finalice el evento. Es un conocido error de iOS 6 que es súper molesto. Casi rompe 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 no se activa

y otro: setInterval hace una pausa en iphone / ipad (Safari mobile) durante el desplazamiento

y aquí está lo más cercano a un informe de errores (Apple no hace públicos los informes de errores 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 bit de código descongelará los timeres que se rompen / pierden / destruyen por iOS durante un desplazamiento de página: https://gist.github.com/ronkorving/3755461

Este es otro bash para arreglar la function freeze: iOS 6 js no se llama si ha establecido setTimeout en él

Desafortunadamente, no hay nada que puedas hacer para disparar events MIENTRAS se desplaza la página. Como desvanecer un enlace de return a la parte superior cuando se desplaza hacia arriba en la página. Cuando se trata de desplazarse, iOS6 es incapaz de frotar su barriga y darle palmaditas en la cabeza. (iOS5 funciona bien, por cierto. Esta es una regresión)

Para responder a la tercera pregunta, una limitación de tamaño decente es que, a veces, innerHTML simplemente no funciona . De la respuesta aceptada:

Ocurre cuando la CPU del teléfono está muy ocupada (por ejemplo, 100%). A continuación, el motor de renderizado a veces se olvida de la configuration de innerHTML.

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