특정한 시간에 화면 새로고침 (코드가 지연되서 실행됩니다)

특정한 시간에 화면 새로고침 (코드가 지연되서 실행됩니다)

QA

특정한 시간에 화면 새로고침 (코드가 지연되서 실행됩니다)

본문

<script>
function getTodayTime(){
    var today = new Date();
    var h=today.getHours();
    var m=today.getMinutes();
    if(h===3){
        if(m===48){
            window.location.reload();
        }
        setTimeout("getTodayTime()", 1*60*1000);
    }else{
        setTimeout("getTodayTime()", 40*60*1000);
    }
}
getTodayTime();

</script>

<script>
    var timer = setInterval(function()(<?=$getTodayTime();?>);
    }, 1)
</script>

 

여차 저차 해서 일정한 시간대에 자동으로 새로 고침을 하는 스크립트를 구현(구글링)했습니다.

문제는

 

1. 저는 00:00:00 초단위로 구현을 해야 하는데 분단위로 구현이 된다는 점.

=분단위 새로고침이 아닌 초 단위로의 새로고침을 구현하고 싶습니다.

 

2. 분단위 구현도 일정한 시간에 구현되는게 아니고 지정된 분 (  if(m===48){ <<요 값 이

지난지 30~40초 이후에나 새로고침이 실행이 된다는 점입니다.

=지연 없이 즉시 실행되게 하고 싶습니다.

 

초 단위로 구현을 하고 즉시 실행을 하려면 어떤 방법을 써야 할지 setInterval 같은 함수를 쓰면 될 것같은데 사용법을 몰라서 적용을 못 시키는 것 같기도 합니다. 그리고 getSeconds 를     

var s=today.getSeconds(); 이렇게 지정하더라도         setTimeout("getTodayTime()", 40*60*1000); 이 부분을 초단위로 정상적으로 설정하려면 어찌 해야 할지 몰라서 초단위로 지정도 못하고 있습니다.

 

고수 분들의 답변 기다립니다. 부탁드립니다. 항상 고맙습니다 ..

이 질문에 댓글 쓰기 :

답변 2

님이 원하는 코드가 아닌데요 ㅠ.ㅠ

그리고 1초에 한번씩 페이지 새로 고침하는건 

저거 다 필요 없이 아래 html 코드를 <head> </head> 에 넣어두면 됩니다.


<meta http-equiv="refresh" content="1">
 

하지만 1초에 한번씩 리프레시 하는건 보통 권장하는 방법은 아니니까요



일정 시간주기 새로고침이 아닌
특정 시간을 주기로 새로고침을 원하고있습니다

그래서 시간이 지정되는 리프레시코드를 질문드린겁니다 ㅠㅠ

답변 감사합니다

혹시 특정시간 주기로 지연없이 실행되는 방법은 없을까요?

특정시간을 외부에서 주는건가요?
meta 태그를 php 에서 만들어줘도 되고...


function periodRefresh(sec) {
   timer = setTimeout(function () {
      window.location.reload();
   }, sec * 1000);  
}

periodRefresh(원하는초)


원하는 정확한 동작인지는 모르겠네요 ^^

예약시스템을 예로 들어 새벽4시와 오후4시30분에 자동새로고침됩니다.
 

<script>
function refreshAt(hours, minutes, seconds) {
    var now = new Date();
    var then = new Date();

    if(now.getHours() > hours ||
        (now.getHours() == hours && now.getMinutes() > minutes) ||
        now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >= seconds) {
        then.setDate(now.getDate() + 1);
    }
    then.setHours(hours);
    then.setMinutes(minutes);
    then.setSeconds(seconds);

    var timeout = (then.getTime() - now.getTime());
    setTimeout(function() { window.location.reload(true); }, timeout);
}

refreshAt(04,00,0);
refreshAt(16,30,0);
</script>

답변을 작성하시기 전에 로그인 해주세요.
전체 56
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT