1

J'essaie de résoudre le problème de performance avec Dive Into Python 3 sur IE8. Visitez this page dans IE8 et, après quelques instants, vous verrez la fenêtre suivante:Faire fonctionner DiveIntoPython3 dans IE8 (corriger un problème de performance Javascript)

alt text http://dl.getdropbox.com/u/87045/permalinks/dip3-ie8-perf.png

Je retracée le coupable jusqu'à cette ligne dans j/dip3.js

... trouver ("tr: nth-child ("+ (i + 1) +") td: nth-enfant (2) ");

Si je le désactive (et que je reviens de la fonction immédiatement), le message "Arrêter l'exécution de ce script?" La boîte de dialogue n'apparaît pas car la page se charge maintenant assez rapidement.

Je ne suis pas un expert Javascript/jquery, donc je vous demande à d'autres développeurs pourquoi cette requête rend IE lente. Y a-t-il une solution?

Édition: vous pouvez télécharger le entire webpage (980K) pour un affichage/montage local.

Répondre

0

Cela semble avoir besoin d'un peu de réécriture.

nth-child est une opération lente. Vous devez implémenter la fonctionnalité en cours en générant des classes ou des identifiants qui seraient communs aux TD dans la table et les éléments de la collection refs (dip3.js line 183). puis:

refs.each(function(i) { 
    var a = $(this); 
    var li = a.parents("pre").next("table").find("td."+a.attr('class')); 
    li.add(a).hover(function() { a.css(hip); li.css(hip); }, 
    function() { a.css(unhip); li.css(unhip); }); 
}); 
0

Ce message contextuel est trompeur - cela ne signifie pas en fait que IE fonctionne lentement, mais que le nombre d'instructions de script exécutés a dépassé un certain seuil. Même si le script s'exécute très rapidement, vous verrez toujours ce message si vous dépassez la limite. La seule façon de s'en débarrasser est de réduire le nombre d'instructions exécutées ou de modifier le registre.

http://support.microsoft.com/kb/175500

Je trouve l'implémentation de Microsoft de ce très ennuyeux. Il fait des hypothèses sur la vitesse de votre ordinateur.

Questions connexes