2014-07-18 4 views
0

를 재설정에서 타이머 ..방지 나는 시간이 문제는 페이지가 다시로드 할 때 타이머가 처음부터 다시 시작한다는 것입니다 0</p> <p>에 도달하면 프로그램을 종료 카운트 다운 타이머 스크립트를 만들고있어

타이머가 재설정되지 않도록 할 수있는 방법이 있습니까?

// set the date we're counting down to 
    var target_date = new Date().getTime(); 
    var delay=100; 
    // variables for time units 
    var days, hours, minutes, seconds; 

    // get tag element 
    var countdown = document.getElementById("countdown"); 

    // update the tag with id "countdown" every 1 second 
    setInterval(function() { 

     // find the amount of "seconds" between now and target 
     var current_date = new Date().getTime(); 
     var seconds_left = (current_date - target_date)/1000; 
     var a=(delay-seconds_left); 
     // do some time calculations 

     minutes = parseInt(a/60); 
     seconds = parseInt(a % 60); 
     var progress = a/delay*100; 

     // format countdown string + set tag value 
     countdown.innerHTML = '<div Class=outer style="font-size:20px;width:'+progress+'%">'+minutes + "m: " + seconds + "s" + '</div>'; 

     if(a <= 0) 
     { 
     window.open("a.html") 

     self.close(); 
     //var wind = window.open("a.html");  
     } 

    }, 1000); 
+4

* "타이머가 다시 설정되는 것을 방지 할 수있는 방법이 있습니까?"* * "새로 고침 방지"*가 제안하는 제목과 다른 질문입니다. –

답변

1

당신은 로컬 스토리지 (또는 쿠키)에 target_date을 저장하고 페이지로드에 찾아보실 수 있습니다. 예 :

var target_date = localStorage.target_date; 
if (target_date) { 
    // Found it in local storage, turn the string into a number 
    target_date = parseInt(target_date); 
} else { 
    // Didn't find it in local storage, get the target and 
    target_date = new Date().getTime(); // See below, this looks weird 
    localStorage.target_date = String(target_date); 
} 

로컬 저장소는 quite well-supported in modern browsers입니다.

문자열 및 특정 기타 저장 장치 호환 가능 항목 만 로컬 저장소에 저장할 수 있습니다. 따라서 위의 번호의 문자열 버전을 명시 적으로 처리하고 있습니다. 보다 복잡한 정보를 저장해야하는 경우 JSON은 일반적으로 유용한 형식입니다.


이 코드는 나에게 많은 이해가되지 않습니다 target_date 초기화 : 그것은 시간 지금을 잡고. 나는 카운트 다운이 앞으로 일 때의 경우 target_date 일을 기대한다. 어쨌든 필요에 따라 해당 행을 교체하십시오 (또는 저장중인 행을 대체하십시오).

+0

그것은 페이지가 열리고 current_date가 매초마다 날짜를 얻는 시간을 얻습니다. 이것은 시간의 차이를 계산합니다. 시간 간격이 주어진 지연 시간보다 클 때 프로그램이 중지됩니다. – Sudhakar

+0

@ user3852052 : 아, 잡았다. 그렇다면 위가 효과가있다. –

1

또는 현재 시간을 쿠키에 넣고 페이지를로드 할 때 해당 쿠키를로드 할 수 있습니다. Learn more about Cookies here.

+0

[Cookies.js] (https://github.com/ScottHamper/Cookies)를 사용하면 쿠키에서 값을 쉽게 설정하고 가져올 수 있습니다. 그것 없이는, 당신은 가능성이 자신의 함수를 작성하거나 값을 만료 시간이있는 특수 형식으로 설정해야합니다. –

+0

이미 게시 된 링크에는 getCookie(), setCookie() 및 checkCookie() 함수가 있습니다. 그들은 이해하기 쉽고 사용하기 쉽습니다. – lui1000