J'ai été suivi vers le bas une fuite de mémoire dans mon application web qui supprime dynamiquement et ajoute des ancres qui ont infobulles cluetip attachés et je pense que je suis limité le problème à la fermeture principale dans cluetip qui attache le bloc au noeud (ligne 32: var link = this, $ this = $ (this);).mémoire jQuery cluetip fuite
J'ai exécuté le script suivant dans SIEV avec une version modifiée de jquery 1.3.2 avec le correctif suivant qui permet de supprimer les éléments de bloc-notes . Cependant, les noeuds d'ancrage deviennent orphelins car il y a encore une référence à eux après que les noeuds de bloc-code sont supprimés?
Si je change la ligne 32 de la source de bloc à la suivante pour tester fins: var link = $ ('br'), $ this = $ ('br');
Les ancres sont libérés mais les nœuds « br » commencer à construire.
Par conséquent, je me demandais si quelqu'un sait comment je peux contourner ce problème ? ou si je ne libère pas les ressources correctement?
scripts attachés et Source:
modification jQuery. Après la ligne 1247, insérer ce qui suit avant l'accolade de fermeture (http://markmail.org/message/cfi4bvfjc3m6ww6k#query:jquery%20memory%20leak%20in%20remove%20and%20empty+page:1+mid:tapc7zt3cwl6rw4f+state:results):
this.outerHTML = "";
Exemple de script:
<html>
<head>
<link rel="stylesheet" type="text/css" href="jquery.cluetip.css"/>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery.cluetip.js"></script>
<script type="text/javascript">
$(document).ready(function() {
setInterval(resetCluetip, 1000);
});
function resetCluetip() {
$('a').each(function() {
$(this).cluetip('destroy');
$(this).unbind().remove();
});
$('#cluetip*').unbind().empty();
$('body').html('<a href="#" class="contextMenu" title="title|body">anchor one</a><br>');
$('a').each(function() {
$(this).cluetip({splitTitle: '|'});
});
}
</script>
</head>
<body>
</body>
</html>
Le script est est simplement un conteneur de test pour ce que ma demande de production fait pour mettre en évidence le problème. Dans ma demande de production, nous avons des balises d'ancrage qui représentent des documents qui peuvent être ajoutés ou supprimés par les utilisateurs donc, quand ils sont ajoutés ou supprimés les cluetips doivent être ajoutés ou supprimés. Malheureusement, il semble que la supprimer ne peut pas supprimer les références à l'ancre en raison de la fermeture (http://www.ibm.com/developerworks/web/library/wa-memleak/) qui provoque la fuite. Quelle version de I.E. avez-vous utilisé pour tester cela? Comme I.E. 6 et 7 ne peuvent pas faire face à ce genre de fuite – Andrew
Merci pour le rappel sur les wildards.Les autres objets cloutés semblent être nettoyés de la façon dont je l'ai maintenant. Mais cela pourrait être plus probable parce que je nettoie l'objet parent qui a l'ID "cluetip". – Andrew