Je ne peux tout simplement pas pour la vie de comprendre cette fuite de mémoire dans Internet Explorer.Problème de fuite/performance mémoire Javascript?
insertTags
simple prend la chaîne str
et place chaque mot dans les balises de début et de fin pour le HTML (généralement les balises d'ancrage). transliterate
est pour les nombres arabes, et remplace les nombres normaux 0-9 avec un & # .. n; Identité XML pour leurs homologues arabes.
fragment = document.createDocumentFragment();
for (i = 0, e = response.verses.length; i < e; i++)
{
fragment.appendChild((function(){
p = document.createElement('p');
p.setAttribute('lang', (response.unicode) ? 'ar' : 'en');
p.innerHTML = ((response.unicode) ? (response.surah + ':' + (i+1)).transliterate() : response.surah + ':' + (i+1)) + ' ' + insertTags(response.verses[i], '<a href="#" onclick="window.popup(this);return false;" class="match">', '</a>');
try { return p } finally { p = null; }
})());
}
params[0].appendChild(fragment);
fragment = null;
J'aimerais quelques liens autres que MSDN et about.com, parce qu'aucun d'entre eux ont suffisamment expliqué pourquoi me fuites mon script mémoire. Je suis sûr que c'est le problème, car sans cela tout va vite (mais rien ne s'affiche). J'ai lu que faire beaucoup de manipulations DOM peut être dangereux, mais les boucles pour un maximum de 286 fois (# de versets dans la sourate 2, la sourate la plus longue dans le Coran).
* fuites de mémoire dans IE7 et IE8, ne suis pas sûr 6, mais fonctionne parfaitement bien dans Safari 4, FF 3.6, Opera 10.5, Chrome 5 ... *
Je ne sais pas quelle version d'IE que vous utilisez, mais j'ai eu des problèmes de performance dans le passé avec IE7..Using le même code sur IE8/FF/Chrome a été rapide, mais IE7 n'aime pas beaucoup de traverser le DOM –