addEventListener内存泄漏

nul*_*dix 8 javascript dom memory-leaks

addEventListener元素上注册事件时,然后在不删除事件的情况下删除该元素,并且反复这样做会使内存"泄露"吗?

bob*_*nce 5

它不应该泄漏.当事件处理程序导致主机对象<> JS-object循环时,一个臭名昭着的漏洞就像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>
Run Code Online (Sandbox Code Playgroud)

(要使用存在的参考循环对其进行测试,请将function click定义向上移动到replace正文中.)