2012-02-08 5 views
0

IE7でメモリリークが発生したと思います。私たちのページの1つは、ユーザーがそれから離れて移動したときにクラッシュしていました。いくつかのデバッグから、私はそれをコメントアウトするときにページがうまく動作すると考えて、犯人と思われる次のコードを見つけました。IE7メモリリークの詳細解説

$$('.someClass').each(function(item, index) { 
    $(item).addEvent('click', function(e) { 
     if (e) e.preventDefault(); 
     // ... 

     // MEMORY LEAK?? 
     var userId = $(item).getElement('a').id.substr(10); 

     // ... 
    }); 
}); 

これは、DOM要素とuserId変数の間のサイクルを中断する必要がある場合です。私はまだコンセプトと少し苦労しています。

+0

コードスニペットは、ページを移動したときの動作に影響を与えません。私はそれがあなたの犯人だとは思わない – Prescott

答えて

0

私はそれを試みていました(それはmootoolsだと思いますか?)、そして漏れを確認できます。

each()内で何をしても問題ありません。each()はリークを作成します。すべてのページ・ロードで、私は2つのリークを取得します.1つはHTML要素、もう1つはDIV要素です。

DIVはDOMの一部ではなく(ドキュメント内にDIVが存在しない状態でテストされています)、mootoolsによってテスト目的で作成されています。

$$('.someClass').each(function(){}); 

だから私は何を提案してもよい:MooToolsのコア-1.4.4でテスト:はPS


^^ MooToolsは使用しないでください、私はこれだけを使用する際の漏れも発生します-full-compat.js、IE6 and sIEve

0

メモリリークはありません。 userIdは、何も接続していない文字列変数です。範囲外になるとブラウザはガベージコレクトします。

+0

あなたは知っている、私はそのコードにコメントしたときにそれは離れていたが、それは再び現れた。私はさらに調査し、私がそれを理解できれば質問を更新します。ありがとう。 –