我有一個應用程序允許用戶查看特定情況下的詳細信息,無需回傳。每次用戶向服務器請求數據時,我都會拉下以下標記。如何在JavaScript中處理DOM元素以避免內存泄漏
<form name="frmAJAX" method="post" action="Default.aspx?id=123456" id="frmAJAX">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" />
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" />
</div>
<div id="inner">
<!-- valid info here --!>
</div>
</form>
接下來,我走在上面,它的innerHTML到一個新的DOM元素,像這樣:
success: function(xhtml) {
var tr = document.createElement('tr');
var td = document.createElement('td');
var container = document.createElement('div');
obj.parentNode.parentNode.parentNode.insertBefore(tr, obj.parentNode.parentNode.nextSibling);
td.appendChild(container);
container.innerHTML = xhtml;
tr.appendChild(td);
但是上面後,我用一些jQuery來去除討厭的ASPNET垃圾
$('form:eq(1)').children().each(
function() {
if ($('form:eq(1)').find('div').filter(function() { return $(this).attr('id') == ''; }).remove());
}
);
//Capture the remaining children
var children = $('form:eq(1)').children();
// Remove the form
$('form:eq(1)').remove();
// append the correct child element back to the DOM
parentObj.append(children);
我的問題是這樣的 - 當使用IESieve我注意到沒有實際的泄漏,但數量不斷增加的DOM元素(因此內存使用)。
我可以在客戶端改進什麼來實際清理這個混亂?注 - IE7/8都顯示了這些結果。
編輯:我終於得到這個工作,並決定寫一個短的blog post與完整的源代碼。
你真的應該接受的答案,現在這個問題.... – Blazemonger 2011-11-04 13:27:26
你能更新URL博客文章? – Christian 2014-04-08 08:53:45
@Christian剛剛(對不起,鏈接斷了) – 2014-04-08 13:08:16