2016-09-11 2 views
2

내 홈페이지가 특정 시간 (오후 1시)에 매일 변경되도록하고 싶습니다.주어진 시간에 새 HTML 페이지 자동로드

페이지에 24 시간 카운트 다운 타이머가 있으며 0에 도달하면 새 페이지를로드하고 타이머가 다시 시작됩니다.

나는이 일 (오후 1시)의 특정 시간에 일어날 수 있도록하는 방법을 특정 시간

<script> 
    setTimeout(function(){ 
     window.location='Page2.html'; 
    }, 5000); 
</script> 

하지만 이후에 페이지 새로 고침을 만드는 방법을 이해합니다.

+0

변경 하시겠습니까? 페이지 내용이 DB에서 왔습니까? – RamRaider

+0

크론 (cron) 작업에 대해 자세히 알아보기 – kikuyu1

+0

사이트가 개발됨에 따라 SQL 데이터베이스를 구축 하겠지만 현재는 매일 새 페이지를 디자인하고 업로드합니다. –

답변

5

페이지로드/새로 고침시 현재 시간 가져 오기를 시도 할 수 있습니다. 그런 다음 오후 1 시까 지 밀리 초 계산하십시오. 그리고 이것을 사용하여 setTimeout을 설정하십시오. moment과 같은 라이브러리를 사용하여 시간 계산을하는 것이 좋습니다. 당신의 HTML에서

로드 순간 : JS에서

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script> 

:

// time right now 
var now = moment.now(); 
// set refresh hour to 1pm 
var nextRefresh = moment.now().hour(13).minute(0).second(0).millisecond(0); 

// check if is or after 1pm 
if (now.hour >= 13) { 
    nextRefresh.add(1, 'days'); // add 1 day 
} 

setTimeout(function() { 
    console.log('next 1pm'); 
}, nextRefresh.diff(now)); 

그리고 @Stoycho Trenchev이 권리입니다. setTimeout86400000 ms로 setInterval을 호출하고 싶을 것입니다. 이렇게하면 매일 페이지가 새로 고쳐집니다.

+0

방금 ​​OP의 머리를 넘은 것 같아요. 또한 localStorage에 nextRefresh를 저장하지 않는 한 끝없는 브라우저 새로 고침으로 인해 멈추게됩니다. – Darkrum

+0

솔직히 말해서 JS 날짜를 사용하고 논리 연산자를 사용하는 것보다 간단하다고 생각합니다. 코드는 매우 읽기 쉽습니다. 단지 순간 라이브러리를로드하는 것이지만 너무 나쁘지 않아야합니다. 그리고 끝없이 새로 고침을 잘 잡아, diff 순서를 바꿨습니다. 답변이 업데이트되었습니다. – Dan

+0

자바 스크립트의 기본 시간 API에 대해 논쟁이 없습니다. 그것이 순간이 아니었고 그들의 타임 존 라이브러리가 아니라면 나는 건물을 뛰어 넘었을 것입니다. – Darkrum

2

setTimeout이 아닌 setInterval이 필요하고 밀리 초 단위로 24 시간을 계산해야합니다.

+0

JavaScript가 브라우저에서 실행되는 것을 잊어 버렸으므로 사용자가 페이지를 떠날 경우 계산되지 않습니다. 무엇이 페이지를 바꿀 것입니까? 일부 코드?당신은 페이지를 변경하고 사람들은 변경 후 입력하면 자신의 브라우저를 다시로드합니다 ... –

+0

브라우저에서만 실행되는 것은 잘못된 것입니다. 지금은 어디 에나 있습니다. – Darkrum

+0

여러 node.js 웹 사이트가 있지만이 경우 브라우저에 있습니다. –

1

Ah. 뭔가?

<script> 
    function getTime() { 
     var date = new Date() 
     var time = date.getTime(); 
     var hours = time.getHours(); 
     var minutes = time.getMinutes(); 
     var seconds = time.getSeconds(); 

     var time = {'hours': hours, 'minutes': minutes, 'seconds': seconds}; 
    } 

    setInterval(function() { 
     var time = getTime(); 

     if (time.hours === 13 && time.minutes === 0) { 
      window.location = 'Page2.html'; 
     } 
    }, 500); 
</script> 
+0

도움을 주셔서 감사합니다. 연극을 가지고 제안을 읽습니다. 나는 가장 잘 작동하는 것을보고 연락 할 것입니다. –

+0

이 코드는 59 초 동안 브라우저를 끝없이 새로 고침합니다. – Darkrum

1

타이머를 설정하고 타이머가 트리거 될 때까지 필요한 시간을 계산하려면 setTimeout이 필요합니다.

var now = new Date(); 
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now; 
if (millisTill10 < 0) { 
    millisTill10 += 86400000; // it's after 10am, try 10am tomorrow. 
} 
setTimeout(function(){alert("It's 10am!")}, millisTill10); 
2

여기서 그냥 가서 당신은 사용자가 어디 오후 1되지 않습니다 있습니다 오후 1시이기 때문에 A는 참고하시기 바랍니다 자바 스크립트, 그래서 그냥 브라우저의 시간을 사용합니다.

var intervalId = window.setInterval(checkTime, 500); 

function checkTime() { 

    var d = new Date(); 
    var h = d.getHours(); 
    var m = d.getMinutes(); 
    var s = d.getSeconds(); 

    if(h == 13 && m == 0 && s == 0) return window.location='Page2.html'; 
} 
관련 문제