Tôi có một ứng dụng cho phép người dùng xem chi tiết về một trường hợp cụ thể bằng cách đăng lại. Mỗi lần người dùng yêu cầu dữ liệu từ máy chủ tôi kéo xuống đánh dấu sau.Cách xử lý các phần tử DOM trong JavaScript để tránh rò rỉ bộ nhớ
<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>
Tiếp theo, tôi lấy trên và innerHTML nó vào một phần tử DOM mới như vậy:
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);
nhưng sau khi ở trên, tôi sử dụng một số jQuery để loại bỏ các aspnet khó chịu rác
$('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);
Câu hỏi của tôi là như vậy - Khi sử dụng IESieve Tôi nhận thấy không có rò rỉ thực tế nhưng số lượng DOM ngày càng tăng (do đó sử dụng bộ nhớ).
Tôi có thể cải thiện điều gì ở phía máy khách để dọn dẹp đống lộn xộn này? Lưu ý - cả IE7/8 đều hiển thị các kết quả này.
EDIT: Cuối cùng tôi đã làm việc này và quyết định viết một đoạn mã ngắn blog post với mã nguồn hoàn chỉnh.
Bạn thực sự nên chấp nhận một câu trả lời cho câu hỏi này ngay bây giờ .... – Blazemonger
Bạn có thể cập nhật URL để blog post? – Christian
@Christian vừa làm (xin lỗi vì liên kết bị hỏng) –