39 votes

Mobile de Safari sur iOS se bloque sur les grosses pages

J'ai un problème lorsque le navigateur safari mobile se bloque lors du chargement et manipulation du dom avec jquery lorsque les pages sont trop gros.

J'obtiens le même problème sur iPhone et iPad.

Quels sont le meilleur moyen de résoudre les pages de mobile pour trouver l'erreur? Existe-il des problèmes connus qui pourrait faire planter le navigateur Safari mobile?

31voto

Johan Nordberg Points 655

J'ai effectivement trouvé le problème. Il n'était pas avec JS comme je le pensais, mais avec le CSS. J'ai ajouté de la classe pour faire une transition CSS à s'estomper dans certains éléments. Pour les utilisateurs anonymes, ces éléments ont display: none; , et probablement jamais couru l'opacité de transition.

La chose étrange est que les transitions a exactement deux éléments. Alors pourquoi serait-ce seulement un crash sur les longues discussions avec+ de 100 commentaires?

De sorte que la ligne de fond est: -webkit-transition s'est écrasé la page sur le navigateur safari mobile.

24voto

indzuliin Points 160

Eu le même problème, pour moi, c'était -webkit-transform: translateZ(0); qui a causé le crash de Safari.

21voto

Mathias Points 488

Je sais que cette question a été correctement répondu, mais je voulais juste mettre mes cinq cents en trop que j'ai été frapper ma tête contre le mur au-dessus de cela un tout à fait à quelques reprises:

Comme la plupart des réponses ont souligné déjà, il revient souvent à des problèmes de mémoire. Presque tout peut être le dernier bit que, finalement, des conseils sur la "mémoire de tas" comme un translateZ ou quoi que ce soit d'autre.

Cependant, dans mon expérience, il n'a rien à voir avec le CSS (ou JS) commande spécifique. C'est juste que la dernière transition a été l'un de trop.

Ce qui a tendance à beaucoup m'aider est de garder tout ce qui n'est pas visible à ce moment en vertu de l' display: none. Cela peut sembler primitif, mais en fait le truc. C'est une façon simple de dire le moteur de rendu du navigateur que vous n'avez pas besoin de cet élément en ce moment et donc libère de la mémoire. Cela vous permet de créer des miles le long de la verticale ascenseurs avec toutes sortes d'effets 3d aussi longtemps que vous le cacher des éléments que vous n'utilisez pas en ce moment.

12voto

sergio Points 52422

Le principal problème avec l'application iOS est l'utilisation de la mémoire. Donc, il est probable que vos pages sont d'utiliser trop de mémoire.

Mobile Safari usage astucieux de la technique de sorte que l'ensemble de la page a à résider en mémoire à un moment donné, seule une partie de elle. Vous pourriez peut-être vérifier si quelque chose dans votre page défaites ce mécanisme ou le rend moins efficace.

En tout cas, pour donner plus de place au point de suggestions, plus d'informations sur votre page serait vraiment génial.

En passant, vous pourriez avoir quelques astuces de la de crash de l'appareil, qui store. Vérifier pour voir si vous pouvez le trouver dans les Paramètres:

  1. Général
  2. Sur
  3. Outils De Diagnostic Et D'Utilisation
  4. Outils De Diagnostic Et D'Utilisation Des Données

Si c'est un problème de mémoire, vous devriez trouver quelque chose comme "signal (0)"; vous ne savez pas si cela peut seulement signifier "tués en raison de l'utilisation de la mémoire", mais j'ai l'habitude de prendre cela pour acquis quand j'ai trouvé un signal (0).

Sinon, il peut vous dire ce qui est faux...

Espérons que cette aide.

3voto

Joshua Points 383

Il y a à la fois les limites de la mémoire et de l'exécution de Javascript, des limites de temps, même si elle est un peu floue quant à la façon dont vous pouvez réellement atteindre. Commune de rapports viennent dans une page avec une taille supérieure à 10 MO va avoir des problèmes, et d'exécution de Javascript est limitée à 10 secondes.

Voir la documentation d'Apple pour plus d'info.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X