Récemment, je dois exécuter périodiquement le script récupéré via Ajax à partir du serveur Web. Je le fais en créant d'abord une étiquette de Script et assigne l'attribut de texte pour exécuter le manuscrit. Ensuite, je dispose la balise de script juste pour savoir que la mémoire ne cessent d'augmenter à chaque création dans IE 7. Le code HTML suivant illustre le problème:IE fuit la mémoire pour le javascript généré dynamiquement
<html>
<body>
<span id='m_garbageBin'></span>
<script type="text/javascript">
function buttonClicked()
{
for (var i = 0; i < 100000; i++)
{
var sc = document.createElement("script");
sc.text = "var x=1;";
document.body.appendChild(sc);
m_garbageBin.appendChild(sc);
m_garbageBin.innerHTML = '';
}
}
</script>
<script id='m_dynamicScript' type="text/javascript">
</script>
<input type='button' value='Click me!' onclick='buttonClicked();'/>
</body>
Le script ne fait rien du tout et toujours la mémoire continue d'augmenter à chaque clic sur le bouton dans IE mais pas dans Firefox (en utilisant .innerHTML au lieu de .text). Le fait que je doive récupérer le script à exécuter périodiquement ne peut pas être changé. Quelqu'un sait ce que je peux faire pour éviter l'augmentation de la mémoire dans IE?
ce n'est pas "ajax" –
Où est 'm_garbageBin' défini? En outre, bien sûr, l'utilisation de la mémoire augmente, vous créez 100000 éléments chaque fois que vous exécutez la fonction. –
@Luke: ce qui précède est illustratif du problème, plutôt que d'être le script original de Conrad (probablement, la partie AJAX fonctionne bien). – outis