改變innerHTML關聯導致記憶體無法釋放

來源:互聯網
上載者:User

使用JavaScript進行DOM操作的時候,視瀏覽器的情況,總會遇到些有趣的事情。這次描述的問題和IE6和innerHTML關聯有關:細節記錄, ie6 對已刪除結點的innerHTML以及dom操作時會出現該刪除節點的記憶體再也釋放不掉,而設定刪除節點的屬性以及 css 則沒有問題。

經常在 xhr 中回調處理結點的注意了,可能要處理的結點已經刪除了。

測試代碼:

 
  1. < div id="p"> 
  2.  < a id="c"> 
  3.   xx  
  4.  < /a> 
  5. < /div> 
  6.  
  7.  
  8. < script> 
  9.  window.onload=function(){  
  10.     
  11.   var a=document.getElementById("c");  
  12.   document.getElementById("p").innerHTML="";  
  13.     
  14.   //css,屬性沒有問題  
  15.   //a.style.width="1px";  
  16.   //a.href="xx";  
  17.     
  18.   //設定innerHTML就有問題了:改變了innerHTML關聯  
  19.   a.innerHTML='yy';  
  20.     
  21.   //dom a 和 span 都無法釋放了  
  22.   //a.appendChild(document.createElement("span"));  
  23.     
  24.   //a=null;  
  25.    
  26.  }  
  27.  < /script> 
  28.    

正常情況下:

頁面執行後 in-use 結點 6 個 ,a 已經釋放了

 

innerHTML關聯:

改變了已刪除結點的innerHTML in-use 結點 7 個 ,a 無法釋放

 

  1. 詳解Javascript中的Array擴充
  2. JSON是什嗎?為JavaScript準備的資料格式
  3. 十個最常用的JavaScript自訂函數
  4. 有關JavaScript事件載入的一些延伸思考
  5. JavaScript使用心得匯總:從BOM和DOM談起

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.