IOS Javascript DOM "Congélation"?

Quelques questions ici:

  1. Existe-t-il de toute façon pour éviter que iOS ne gèle JavaScript sur la page pendant le défilement?

  2. Est-ce que iOS gèle javascript lorsque vous êtes dans un autre onglet ou si vous changez d'applications?

  3. Existe-t-il d'autres limitations importantes de javascript sur iOS?

IOS 6.x suspend tous les chronométreurs d'événements en réponse à des événements tactiles comme le défilement et a tendance à ne pas démarrer tous les temporisateurs une fois que l'événement est terminé. C'est un bug bien connu d'iOS 6 qui est super-ennuyeux. C'est à peu près que ça brise la parallaxe et les choses. Certaines personnes ont eu recours à la création de leur propre fonction de défilement.

Voici un autre StackOverflow sur le même sujet: iOS 6 safari, setInterval n'est pas déclenché

Et un autre: setInterval fait une pause dans iphone / ipad (Safari mobile) pendant le défilement

Et voici la chose la plus proche que vous recevrez sur un rapport de bogue (Apple ne rend pas publics les rapports de bogues pour maintenir l'illusion de la perfection, de sorte que les développeurs ont créé leur propre site de bogues): http://openradar.appspot.com / 12756410

Ce bit de code va dégeler les horloges qui sont brisées / perdues / détruites par iOS pendant une page de défilement: https://gist.github.com/ronkorving/3755461

Il s'agit d'une autre tentative de réparer le gel: la fonction des événements iOS 6 js n'est pas appelée si elle a configuré l'entrée

Malheureusement, il n'y a rien que vous pouvez faire pour déclencher des événements tout en défilant en page. Comme un diaphragme de fond vers le haut lorsque vous faites défiler la page. En ce qui concerne le défilement, iOS6 est incapable de frotter son ventre et son tapotement. (IOS5 fonctionne bien, btw. Ceci est une régression)

Pour répondre à la troisième question, une limitation de taille décente est que parfois innerHTML ne fonctionne tout simplement pas . De la réponse acceptée:

Cela se produit lorsque la CPU du téléphone est très occupée (disons 100%). Ensuite, le moteur de rendu oublie parfois les paramètres innerHTML.

La solution incluse dans mon projet unifié est de tester s'il existe un élément dans childNodes, sinon l'appliquer à nouveau.