Quelles méthodes puis-je utiliser pour reproduire un sporadique IE « script A sur cette page est à l'origine d'Internet Explorer pour exécuter lentement » notification?

StackOverflow https://stackoverflow.com/questions/3686504

Question

Je suis en train de reproduire un bogue que le client a signalé, il est la notification « ce script est en cours d'exécution lente » qui apparaît dans IE en raison de son très lent JS parsing / DOM.

Cela ne se produit pas sur mon VirtualBox IE6 (client a IE6) elle ne fonctionne pas sur une machine de test, j'ai (quelques mini mac).

Je peux vous garantir qu'il ya beaucoup de JS se passe bien, et il y a beaucoup de HTML en cours de traitement après avoir été récupéré à l'aide XHR, en plus des éléments DOM annexés beaucoup d'exploitation JS après. Je ne peux pas poster le script entier, mais je suis sûr que je pourrais facilement suivre la question vers le bas, mais je veux reproduire ce de jouer avec l'optimiser.

Ceci est un très haut client de profil, donc je ne peux pas obtenir sur le téléphone ou la messagerie instantanée et leur parler. Y a-t-il des moyens que je pouvais ralentir ma machine afin de reproduire ce bug? Ou devrais-je simplement coller à demander les spécifications de l'ordinateur du client et essayer d'obtenir l'accès à un ordinateur plus ancien qui aurait une chance plus de chances de reproduire le problème? Ou encore utiliser quelque chose comme BrowserCam?

Une autre idée que je pensais serait en quelque sorte, ce qui rend les JS est encore plus grande, pour si je reçois la question et essayer d'optimiser mon code de sorte que même avec mon code supplémentaire, il ne sera pas poster l'erreur de notification de script.

Je vous en serais reconnaissant des conseils.

Était-ce utile?

La solution

Il y a beaucoup de choses qui peut être fait pour ralentir votre ordinateur. La vraie question est ici si vous voulez qu'il soit précis, ou tout simplement quelque chose qui mâche cycle CPU suffisamment pour permettre IE6 de reproduire cette question plus fréquemment.

A partir de l'état brut et des méthodes simples: Utilisation de la machine virtuelle, donner une seule unité centrale de traitement, puis exécutez quelque chose avec l'utilisation élevée du processeur, comme lecture d'un film. Essayez d'utiliser quelque chose qui n'utilise pas trop RAM, parce que forcer IE dans le fichier d'échange ne vous aidera pas ici. Pour obtenir un ralentissement plus précis, vous pouvez underclock votre CPU, bien faire cela pour des raisons de débogage Javascript est un peu extrême. Obtenir l'accès à un vieil ordinateur peut également faire l'affaire, mais aucun d'entre eux sont garantis pour reproduire le problème.

En utilisant le logiciel de partage d'écran peut également être difficile - cela dépend de la façon dont le client est prêt à l'installation et la mise en place des logiciels comme ça, mais cela ne devrait certainement aider à reproduire le bug. Pour avoir à jouer avec elle pendant que vous épuisez le temps de l'ordinateur du client mais sera probablement inacceptable.

Il y a d'autres choses que vous pouvez essayer, en plus de ralentir l'ordinateur. Vous pouvez effectivement réduire manuellement la limite de temps pour l'avertissement de script lent IE, selon cette article de support Microsoft , en modifiant certaines valeurs de registre. Essayez profilage profond le Javascript sur votre propre machine, même si vous ne peut pas générer l'erreur de script lent, vous pouvez toujours trouver les goulots d'étranglement ou les endroits où le script exécute mal.

Autres conseils

exécuté à l'intérieur d'une machine virtuelle, et abaisser la mémoire sur le but d'avoir la permutation en excès. Si cela ne fonctionne toujours pas, vous pouvez exécuter une analyse comparative SW en arrière-plan, ceux qui tend à mâcher beaucoup de CPU.

J'ai trouvé votre problème:
This is a really high profile client so I can't just get on the phone or IM and speak to them. -. c'est quelque chose que vous allez vouloir fixer, s'ils le veulent fixe


Dans le cas contraire, si vous avez une idée du problème, vous pouvez:

  • créer un XML / document HTML en utilisant des informations aléatoires et le stocker dans une chaîne
  • essayez et parse que l'utilisation XMLDOM ou quelque chose

Vous devriez essayer de le faire avec un million de lignes:

sXML     = "<?xml version="1.0" encoding="UTF-8"?>\n<rootElement>\n";
for (var i=0;i<1000000;i++){
   sXML += '<element name="' + Math.floor(Math.random()*10001) + '">' 
         +    'some more random text: ' + Math.floor(Math.random()*1001) 
         + "</element>\n";
}
sXML     = "</rootElement>";

var oXML = (new DOMParser()).parseFromString(sXML, "text/xml");
var root = oXML.documentElement;

Bien sûr, vous pouvez le faire aussi complexe que vous le souhaitez, en utilisant des éléments aléatoires, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top