2010-04-13 34 views

回答

4

它不应该泄漏。当一个事件处理程序导致一个主机对象时,这个臭名昭着的浏览器就像地狱一样泄漏。> 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体。)

0

如果从DOM,已连接监听器元素删除您将得到内存泄漏。 但是这只发生在IE中,Fx和其他人都有先进的GC。

通常它发生,如果你有没有通过DOM DOM元素操纵,但像

el.innerHTML = ... 

例如,YUI定制实现setInnerHTML,以防止内存泄漏在这种情况下。