私は、ユーザーがポストバックを使って特定のケースの詳細を表示できるアプリケーションを用意しています。ユーザーがサーバーからデータを要求するたびに、次のマークアップをプルダウンします。メモリリークを避けるために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>
次は、私はそうのような新しいDOM要素にそれ以上とinnerHTMLのを取る:
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);
が、上記した後、私は厄介なの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);
を削除するには、いくつかのjQueryを使用
私の質問はこれです - IESieveを使用すると、実際のリークはなく、ますます多くのDOM要素(メモリ使用量)が増えています。
この問題を実際に解決するためにクライアント側で改善できる点は何ですか?注 - 両方のIE7/8はこれらの結果を示します。
EDIT:私は最終的にこれを手に入れて、完全なソースコードで短いblog postを書き込むことに決めました。
あなたは本当に今、この質問への答えを受け入れる必要があります.... – Blazemonger
あなたはポストをブログにURLを更新することはできますか? – Christian
@Christianちょうど(壊れたリンクのため申し訳ありません) –