테스트 사이트 - 개발 중인 베타 버전입니다

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

hk아이템 5년 전 조회 4,682

<script></p>

<p>function getTodayTime(){

    var today = new Date();

    var h=today.getHours();

    var m=today.getMinutes();</p>

<p>    if(h===3){

        if(m===48){

            window.location.reload();

        }

        setTimeout("getTodayTime()", 1*60*1000);

    }else{

        setTimeout("getTodayTime()", 40*60*1000);

    }

}

getTodayTime();</p>

<p>

</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개

채택된 답변
+20 포인트
5년 전

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

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

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

</p>

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

<p>
 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

h
hk아이템
5년 전


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

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

답변 감사합니다

혹시 특정시간 주기로 지연없이 실행되는 방법은 없을까요?
백수1995
5년 전
특정시간을 외부에서 주는건가요?
meta 태그를 php 에서 만들어줘도 되고...

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

periodRefresh(원하는초)
[/code]

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

댓글을 작성하려면 로그인이 필요합니다.

예약시스템을 예로 들어 새벽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>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인