javascript addEventListener内存
如果我使用addEventListener在元素上注册一个事件,然后删除元素而不删除该事件,并且我反复这样做可以创建内存泄漏?
它不应该泄漏。 当一个事件处理程序导致主机对象<> JS对象循环是IE(高达版本7),IE(高达版本8)不支持addEventListener
时,这个臭名昭着的浏览器就像地狱一样泄漏。
如果您想在特定的浏览器中测试浏览器,请保持此运行状态,并了解浏览器的内存使用情况是否会受到长期影响。
<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>
(要使用参考循环进行测试,请将function click
定义向上移动到replace
体中。)
如果从DOM中删除了附加侦听器的元素,则会发生内存泄漏。 但是这只发生在IE中,Fx和其他人有先进的GC。
通常情况下,如果您使用DOM元素而不是通过DOM操作,但是喜欢
el.innerHTML = ...
例如,YUI具有自定义实现setInnerHTML,以防止在这种情况下发生内存泄漏。
链接地址: http://www.djcxy.com/p/45391.html