30 votes

un script sur cette page ralentit le fonctionnement de ie

Le problème est dans le titre - IE se comporte mal et dit qu'il y a un script qui tourne lentement - FF et Chrome n'ont pas ce problème.

Comment puis-je trouver le problème ? Il y a beaucoup de JS sur cette page. Vérifier à la main n'est pas une bonne idée.

EDIT : Il s'agit d'une page d'un projet sur lequel je travaille... mais j'ai besoin d'un outil pour trouver le problème.

Fin : Il s'est avéré qu'il s'agissait du panneau de mise à jour - d'une manière ou d'une autre, il s'embrouillait et mettait trop de temps à traiter quelque chose. Je l'ai jeté par la fenêtre - je n'utiliserai plus que JQuery à partir de maintenant :D.

Je choisis la réponse de Remy Sharp parce que je ne connaissais pas cet outil et qu'il semble très intéressant.

52voto

nikmd23 Points 5780

Les scripts de longue durée sont détectés différemment par les différents navigateurs :

  • IE émettra un avertissement lorsque 5 millions d'instructions auront été exécutées ( Plus d'informations sur MSDN )
  • Firefox émet un avertissement si le script prend plus de 10 secondes ( Plus d'informations sur MDN )
  • Safari émet un avertissement si le script prend plus de 5 secondes.
  • Chrome (1.0) n'a pas de limite définie et continuera simplement à essayer jusqu'à ce qu'une exception OutOfMemory se produise, ce qui entraînera un plantage.
  • Opera continuera à fonctionner indéfiniment, sans avertissement.

Nicholas Zakas a écrit un excellent article sur ce sujet.

Ainsi, la meilleure façon d'éviter ces problèmes est de réduire les boucles, les récursions et les manipulations du DOM.

18voto

Remy Sharp Points 2953

Procurez-vous un exemplaire de IBM Page Profiler :

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=61d74777-1701-4014-bfc0-96067ed50156

Il est gratuit (ce qui est toujours une bonne chose). Démarrez-le en arrière-plan, attendez quelques secondes, puis rafraîchissez la page dans IE. Revenez au profileur et il énumérera toutes les ressources utilisées sur la page et vous donnera des informations détaillées sur le profil - en particulier sur les endroits où le JavaScript prend beaucoup de temps à s'exécuter.

Cela devrait constituer un bon point de départ pour trouver la source de votre problème.

Si les balises script sont en ligne, je suggère de créer une copie locale du fichier et de séparer les balises script dans des fichiers distincts si vous le pouvez.

9voto

Rahul Points 8424

Supprimez la moitié du code et voyez si le problème persiste. Si ce n'est pas le cas, c'est qu'il se trouve dans la moitié que vous avez supprimée. Répétez l'opération jusqu'à ce que vous trouviez quel bloc de code est à l'origine du problème.

3voto

Rohit Points 802

C'est généralement une boucle infinie qui est à l'origine de ce phénomène. Vérifiez vos boucles et leurs conditions de sortie.

1voto

Pour IE, le dialogue est basé sur le nombre de commandes JS traitées. Voir ici pour des informations et une méthode pour changer la valeur par défaut : http://support.microsoft.com/kb/175500

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