删除setTimeout间隔

时间:2012-12-21 11:08:50

标签: javascript dom setinterval

加载文档后,我想刷新一次页面。所以我写了这段代码。它工作正常,但它一次又一次地呼唤。因为我刷新同一页面。但我想在一次执行后清除间隔。

function refreshPage(){
    document.location.reload(true);
    alert('page is refresh.');
}
var interval = setTimeout('refreshPage()', 3000);

2 个答案:

答案 0 :(得分:1)

如果您希望它只能工作一次,无论延迟如何,您都可以在localStorage中存储您执行此操作的事实:

    function refreshPage(){
        alert('page will refresh.');
        document.location.reload(true);
        localStorage['refreshDone'] = 'yes';
    }
    if (!localStorage['refreshDone']) {
        setTimeout('refreshPage()', 3000);
    }

但是,您不能简单地清除超时或间隔,因为每次重新加载页面时窗口变量都会丢失。

由于我不确定您的确切目标,如果您想要刷新(如果最近没有完成),您可以在localStorage中存储时间戳:

    function refreshPage(){
        alert('page will refresh.');
        document.location.reload(true);
        localStorage['refresh'] = new Date().getTime();
    }
    var lastTimeRefresh = parseInt(localStorage['refresh']||'0', 10);
    if (new Date().getTime() - lastTimeRefresh > 30*60*1000) { // 30 minutes
        setTimeout('refreshPage()', 3000);
    }

答案 1 :(得分:0)

你可以在第一次刷新时设置javascript cookies,然后检查是否设置了cookies,如果没有设置,请设置cookie并刷新页面,如果没有那么做