0

ほとんどの場合、イベント ハンドラーが 1 つまたは 2 つしかない場合は、イベント ハンドラーを削除しません。しかし今、ajax を使用して HTML コンテンツを取得し、DOM に追加する Web ページを設計しています。

<body>
    <ul class="menu">
        <li><span id="mainMenuAcc">profile</span></li>
        <li><span id="mainMenuTop">contact</span></li>
    </ul>
    sdfgsegg <br/>
    <div id="container">
    </div>
</body> 


$.ajax({
    url:url,
    beforeSend: function(){
        showSpinner(true);
    },
    success: function(result){
        container.html(result);
        if (page1){
            page1_initUI();
        } else if (page2){
            page2_initUI();
        }
    },
    error: function(obj, errMsj){
        alert("Ajax connection fail. " + errMsj);
    },
    complete: function(){

        showSpinner(false);
    }

  });

ご覧のとおり、ユーザーはさまざまなリスト項目をクリックしてページを切り替えることができるため、DOM オブジェクトは繰り返し挿入および削除されます。ajax呼び出しが成功した後、イベントハンドラーバインディングを実行しますpage1_initUIpage2_initUI

この場合、これによりメモリリークや障害が発生するのではないかと心配しています。このシーンでどうすればよいか、誰かアドバイスしてもらえますか? ブラウザーはイベント ハンドラーを自動的にガベージ コレクションしますか?

4

0 に答える 0