2016-06-30 2 views
0

매시간 (30 분마다) 페이지의 내용을 다시로드해야합니다. 나는 이것을 위해 JavaScript를 생각하고 있으며, 아래의 코드를 시도했지만 무한 루프가된다. 루프를 피하기 위해 어떻게 바꾸는 지 잘 모르겠습니다.: 00 분 및 : 30 분마다 매 시간 다시 불러 오기

meta 태그는 특정 시간에 실행할 수 없어 도움이되지 않습니다.

function refreshContent() { 
    var tDate = new Date(); 
    thisHour = tDate.getHours(); 
    thisMinute = tDate.getMinutes(); 
    thisSecond = tDate.getSeconds(); 
    setTimeout("refreshContent()",60000); // in milliseconds = 1 minute 

    if (thisMinute == 0 || thisMinute == 30) { 
     location.reload(); 
    } 

} 
refreshContent(); 

답변

3

타이머를 하나만 설정하고 다음 번 새로 고침시기를 계산해야합니다. 이렇게하면 페이지가 정확히 00 또는 : 30에로드 될 때 페이지가 반복적으로 다시로드되는 것을 방지 할 수 있습니다. 다음 반 시간 * 60 * 1000 밀리 초에 있음을 변환 할 때까지 몇 분

var minute = new Date().getMinutes(), 
    nextRefresh = (30 - (minute % 30)) * 60 * 1000; 

setTimeout(function() { location.reload(); }, nextRefresh); 

30 - (minute % 30)을 계산합니다. 재로드가 트리거 된 후 타이머는 30 분으로 설정됩니다.

+0

훨씬 쉬워졌습니다! 15 분 (00, 15, 30, 45)마다 새로 고침을하기 때문에 nextRefresh = (15 - (분 % 15)) * 60 * 1000; – Pat

+1

예, 그렇습니다. – JJJ

+0

도움 주셔서 감사합니다. – Pat

-2

당신은 즉시 refreshContent 기능을 호출 할 때 설정 setTimeout. 시도해보십시오. setTimeout(refreshContent, 60000);

관련 문제