2010-04-13 32 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,以防止內存泄漏在這種情況下。