Javascript - 刷新 - 内存泄漏

时间:2012-12-13 09:14:51

标签: javascript

我在下面的代码中看到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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

setInterval更改为setTimeout。您当前的代码将设置一个新的间隔,以便在单击时每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");
}