J'ai un petit souci de Javascript :
Sur une page toute simple, je génère une énorme array bidimensionnelle.
Celle-ci est en fait constituée d'une série d'arrays temporaires qui sont "pushées" sur elle :
Code :
var mybigArray=new Array(); var JStemp = new Array(); JStemp["index1"]="foo";JStemp["index2"] = "bar";JStemp["index3"] = "yeah"; mybigArray.push(JStemp); delete JStemp; var JStemp = new Array(); JStemp["index1"]="hey";JStemp["index2"] = "joe";JStemp["index3"] = "pouet"; mybigArray.push(JStemp); //etc.
|
Présenté comme ça , utiliser une array multidimensionnelles n'a pas d'intérêt ici mais je synthétise le code à l'extrême..
Il y a à peu près 4000 JStemp générées et pushées sur myBigArray, certaines des strings encodées font jusqu'à 255 caractères.
Avec FF et Opera : aucun problème, même si naturellement la génération de la page met un certain temps (comme vous vous en doutez je ne tape pas les 4000 lignes, elles sont générées via des scripts).
Avec IE7 (pas essayé IE6, je ne l'ai plus sous la main), je reçois une "erreur de syntaxe" à une certaine ligne, qui ne diffère quasiment en rien de la ligne précédente, et à un certain caractère qui se trouve en plein milieu d'un index ou d'un contenu ...
- Si je ne mets pas l'instruction "delete", le message arrive aussi, à quelques lignes de différences.
- Si je raccourci drastiquement les strings contenues dans chacun des éléments de JStemp, même chose ...
Ce message d'erreur ne semble avoir aucune logique et donc à priori pas une erreur de syntaxe comme il le prétend..
Du reste, si je mets en commentaires à partir de cette ligne jusqu'à la fin, ça fonctionne bien sans erreur.
Alors j'ai trouvé sur le Net une foule d'article sur les "memory leaks" d'Internet Explorer avec Javascript, mais cela ne semble concerner que des objets DOM faisant référence circulaire avec des objets JS, ce qui n'est pas mon cas ici. De plus, M$ a sorti un hotfix pour ce ce bug, qui a donc été corrigé.
Est-ce que vous avez une idée plus précise de ce qui m'arrive, et surtout comment je peux régler ce problème, à part en forçant les gens à ne plus utiliser IE ? (ce que je ne peux pas (encore? ) faire au boulot, IE étant le seul navigateur officiel (c'est pas moi qui fais les règles...))
Message édité par ZeBix le 28-02-2008 à 21:01:28