Javascript-刷新-内存泄漏

Javascript-刷新-内存泄漏,javascript,Javascript,我在下面的代码中看到Firefox和IE内存严重泄漏。公平地说,这很可能是我糟糕的实现,它需要改变,以允许Firefox和其他浏览器进行垃圾收集 有没有人对如何调整代码以允许更有效地刷新页面有什么建议 <input type="checkbox" onclick="sel1()" id="AutoRefresh"> <script type="text/javascript"> function sel1(){ var ref = documen

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

我想这样会更好。

将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");
}

不要检查ref==true,ref应该已经是一个布尔值,因此,true或false,所以使用:ifref。另外,.click似乎不是元素上的函数,或者我的控制台是这么说的。不确定,但这可能会有帮助:嗨,谢谢。这似乎无法刷新页面。我不确定这个例子是否遗漏了什么,这取决于你在getdata方法中写了什么。您可以使用ajax刷新数据字段,也可以只刷新页面。我想您想使用ajax,所以我写了这段代码。您好,谢谢。这会一次一点地提升Firefox的内存。这可能是Firefox本身的问题。但是我有一个很好的印象,在这之前代码是没有效率的。
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");
}