Question

Je travaille avec une réponse XML volumineuse d'un service Web. Lorsque j'essaie d'obtenir cela en utilisant une URL, après un certain temps, une erreur dans Firebug s'affiche: "Le quota d'espace de la pile de scripts est épuisé". Comment puis-je résoudre ce problème?

Était-ce utile?

La solution

Cela semble donner l'impression qu'il y a une certaine récursion lors du traitement du fichier xml, ce qui provoque essentiellement un débordement de pile (quel que soit le nom).

Pensées:

  • travaillez avec moins de données
  • si vous traitez les données manuellement, essayez d’utiliser moins de récursivité? peut-être un appel manuel manuel ou une file / pile
  • considérez json - vous pouvez alors le décharger sur l'hôte de script pour réhydrater l'objet sans traitement supplémentaire

Autres conseils

Avez-vous essayé de désactiver Firebug?

À partir de Firefox 3, l’espace de pile disponible est passé de 4 Mo à ~ = 640 Ko (je passe ici de bouche à oreille).

Est-ce que vous utilisez FF3?

https://bugzilla.mozilla.org/show_bug.cgi?id=420874

J'ai eu un problème similaire, peut-être le même. Cela peut arriver si vous essayez d’analyser un gros morceau de HTML avec jQuery $ (html).

Dans mes tests, cela ne s’est produit que sous Firefox 3.6.16 sous Windows. Firefox 4.0.1 sur Ubuntu se comportait beaucoup mieux. Rien à voir avec le système d’exploitation, mais le moteur de script de la version 4.x est bien meilleur.

Solution: Au lieu de

var $divRoot = $(html);

j'ai fait

var $temp = $('<div style="display:none;">');  // .appendTo($('body'));  // (*)
$temp.html(html);  // using the client's html parsing
var $divRoot = $('> div', $temp);  // or .children() or whatever
// $temp.remove();  // (*)

(*) Je me souviens que dans certains cas, vous devez ajouter le nœud temporaire au corps avant que jquery puisse appliquer des sélecteurs. Cependant, dans ce cas, cela semblait bien fonctionner sans cela.

Il n'y avait absolument aucune différence sur FF 4.x, mais cela permettait d'éviter l'erreur de débordement de la pile sur FF 3.x.

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