2012-01-12 17 views
2

DOM操作時にIEで重大なメモリリークが検出されました。基本的に、我々はこれをやっていた:IEでのjQuery DOM操作のメモリリーク

function updateTable(){ 
    $.get('table.jsp', {}, function(data){ 
     $('#dataTableContainer').empty().html($(data).find('#dataTable')); 
     setTimeout(updateTable, 1000); 
    }); 
} 

この方法を毎秒1回繰り返す。私たちが見ることができたことから、そのメソッドはjQuery 1.7.1(それ以前のバージョンではさらに悪い)で10秒ごとに1Mbのメモリを漏らしていました。

何か間違っていますか?私たちはすでにstackoverflow(Ex jQuery memory leak with DOM removal)で公開されているいくつかのソリューションを試しましたが、うまくいきませんでした。

function updateTable(){ 
    $.get('table.jsp', function(data){ 
     var dt = $(data).find('#dataTable').html() 
     $('#dataTableContainer').html(dt); 
     setTimeout(updateTable, 1000); 
    }); 
} 

html jQuery methodが文字列または関数、NOTあなたがやっているようなクエリオブジェクトを受け取ります

+0

私は、これが問題だとは思わないが、私は、 ')' $().empty(と同じである '$().htmlを()という印象の下にあった。'()を追加します。あなたはそれが事実でないことを発見しましたか(またはあなたが '.empty()'関数を呼び出す別の理由がありますか? – Jasper

+1

jQueryのどのバージョン? – Patricia

+1

おそらく、関連するコードの残りの部分を参照する必要があります。 – jfriend00

答えて

0

はこれを試してみてください。 htmlメソッドはコンテンツを置き換えるので、emptyメソッドを使用する必要はありません。