Si j'utilise addEventListener pour enregistrer un événement sur un élément, puis supprimez l'élément sans supprimer l'événement et je l'ai fait à plusieurs reprises, puis-je créer une fuite de mémoire?javascript addEventListener memory-leaks question
Répondre
Il ne devrait pas fuir. Le seul navigateur qui est infâme pour fuir comme un enfer quand un gestionnaire d'événement provoque un objet-hôte. La boucle JS-object est IE (jusqu'à la version 7), et IE (jusqu'à la version 8) ne supporte pas addEventListener
. Laissez cette opération en cours et observez comment l'utilisation de la mémoire du navigateur est affectée à long terme si vous souhaitez la tester dans un navigateur particulier.
<div id="x"></div>
<script type="text/javascript">
function replace() {
var x= document.getElementById('x');
if (x.firstChild!==null)
x.removeChild(x.firstChild);
var el= document.createElement('p');
el.addEventListener('click', click, false);
x.appendChild(el);
}
function click() {
alert('click');
};
setInterval(replace, 1);
</script>
(Pour le tester avec un cadeau de boucle de référence, déplacez la définition function click
vers le haut dans le corps replace
.)
Vous obtiendrez fuite de mémoire si vous supprimez du DOM, des éléments qui ont attaché les auditeurs. Mais cela se produit uniquement dans IE, Fx et d'autres ont avancé GC.
Souvent, il arrive, si vous manipuler avec des éléments DOM non via DOM, mais comme
el.innerHTML = ...
Par exemple, YUI a la réalisation personnalisée setInnerHTML, afin d'éviter la fuite de mémoire dans ce cas.
- 1. addEventListener() question/comportement étrange
- 2. Firefox AddEventListener issue
- 3. addEventListener using apply()
- 4. npruntime & addEventListener
- 5. Les événements d'accès ajoutés avec attachEvent()/addEventListener() en JavaScript
- 6. Portée variable Javascript dans la fonction anonymous addEventListener
- 7. question de la fonction Javascript
- 8. Utiliser un addEventListener dynamiquement?
- 9. XUL textbox addEventListener
- 10. Question Javascript
- 11. Adobe Flex Datagrid: addEventListener MouseEvent.CLICK
- 12. addEventListener disparu après avoir ajouté innerHTML
- 13. gérer addEventListener() et removeEventListener() à l'intérieur d'un objet
- 14. setTimeout en javascript question
- 15. javascript to php question
- 16. Javascript Objet/Fonction Question
- 17. simple javascript regex question
- 18. facebook javascript sdk question
- 19. Javascript RegEx Question
- 20. Javascript variable globale question
- 21. prototype JavaScript (ing) question
- 22. JavaScript OOPS Question
- 23. javascript/ajax question
- 24. javascript menu déroulant question
- 25. javascript basic question
- 26. question JavaScript - événement onMouseOver
- 27. Javascript performance question
- 28. Javascript fonction anonyme question
- 29. Javascript course condition question
- 30. Simple question Javascript