J'ai une application qui permet à un utilisateur de visualiser des détails sur un cas particulier w/un postback. Chaque fois qu'un utilisateur demande des données au serveur, je décroche le balisage suivant.Comment disposer des éléments DOM en JavaScript pour éviter les fuites mémoire
<form name="frmAJAX" method="post" action="Default.aspx?id=123456" id="frmAJAX">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" />
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" />
</div>
<div id="inner">
<!-- valid info here --!>
</div>
</form>
Ensuite je prends ce qui précède et innerHtml à un nouvel élément DOM comme ceci:
success: function(xhtml) {
var tr = document.createElement('tr');
var td = document.createElement('td');
var container = document.createElement('div');
obj.parentNode.parentNode.parentNode.insertBefore(tr, obj.parentNode.parentNode.nextSibling);
td.appendChild(container);
container.innerHTML = xhtml;
tr.appendChild(td);
mais après ce qui précède, j'utiliser une jQuery pour enlever la malbouffe méchant aspnet
$('form:eq(1)').children().each(
function() {
if ($('form:eq(1)').find('div').filter(function() { return $(this).attr('id') == ''; }).remove());
}
);
//Capture the remaining children
var children = $('form:eq(1)').children();
// Remove the form
$('form:eq(1)').remove();
// append the correct child element back to the DOM
parentObj.append(children);
Ma question est - Lorsque vous utilisez IESieve Je remarque pas de fuite réelle, mais un nombre toujours croissant d'éléments DOM (donc l'utilisation de la mémoire).
Que puis-je améliorer sur le côté client pour nettoyer ce désordre? Remarque- les deux IE7/8 montrent ces résultats.
EDIT: J'ai finalement obtenu ce travail et j'ai décidé d'écrire un court blog post avec le code source complet.
Vous devriez vraiment accepter une réponse à cette question maintenant .... – Blazemonger
Pouvez-vous mettre à jour l'URL de blog post? – Christian
@ Christian juste fait (désolé pour le lien brisé) –