1

以下のコードで、Firefox および IE 内で重大なメモリ リークが発生しています。公平を期すために、それは私の不十分な実装である可能性が非常に高く、Firefox や他のブラウザーがガベージ コレクションを実行できるように変更する必要があります。

ページをより効率的に更新できるようにコードを微調整する方法について何か提案はありますか?

<input type="checkbox" onclick="sel1()" id="AutoRefresh">

<script type="text/javascript">
    function sel1(){
        var ref = document.getElementById('AutoRefresh').checked;
        if(ref == true) {
            setInterval(function(){
                document.getElementById('dataRefreshButton').click(); }, 2000);
            }
            window.alert("Auto refresh on");
        }
</script>
4

2 に答える 2

0

これで良くなると思います。

<script type="text/javascript">
    function getdata(){
        // get your data    
    }
    var intGetData;
    function sel1(){
        var ref = document.getElementById('AutoRefresh').checked;
        if(ref == true) {
            intGetData = setInterval(getdata, 2000);
            window.alert("Auto refresh on");
        }
        else{
            clearInterval(intGetData);  
            window.alert("Auto refresh off");           
        }
    }
</script>
于 2012-12-13T09:27:03.530 に答える
0

に変更setIntervalsetTimeoutます。現在のコードは、クリックされたときに 2 秒ごとに要素をクリックする新しい間隔を設定します。一度クリックすると雪崩が発生します。

または、さらに良いことに、間隔を停止します。

var handle = null;
function sel1(){
    var ref = document.getElementById('AutoRefresh').checked;
    clearInterval(handle);
    if (ref)
        handle = setInterval(function(){
            document.getElementById('dataRefreshButton').click();
        }, 2000);
    window.alert("Auto refresh on");
}
于 2012-12-13T09:38:29.817 に答える