抱歉沒怎么懂題O(∩_∩)O~不過希望有幫助。
IE的js對象和DOM對象使用不同的垃圾收集方法,因此閉包在IE中會導致內存泄露問題,也就是無法銷毀駐留在內存中的元素。舉個例子,需要去注銷事件。
function?ready(fn){????if(document.addEventListener)?{????????//標準瀏覽器
????????document.addEventListener('DOMContentLoaded',?function()?{????????????//注銷事件,?避免反復觸發
????????????document.removeEventListener('DOMContentLoaded',arguments.callee,?false);
????????????fn();????????????//執行函數
????????},?false);
????}else?if(document.attachEvent)?{????????//IE
????????document.attachEvent('onreadystatechange',?function()?{????????????if(document.readyState?==?'complete')?{????????????????
????????document.detachEvent('onreadystatechange',?arguments.callee);
????????????????fn();????????//函數執行
????????????}
????????});
????}
};
或者在引用DOM時對其釋放,解除引用避免內存泄露。
function?fn(){????var?oId?=?document.getElementById('id');????var?html?=?oDiv.innerHTML;
????oId.onclick?=?function?()?{????????console.log(html);
????};
????oId?=?null;??//釋放}