2011-08-13 6 views
1

오늘 배운 것처럼 잠자기 모드에서 자바 스크립트 타이머 기능을 실행하는 전화기를 넣으면 일시 중지됩니다.iPhone 잠자기 모드에서 타이머를 실행하는 중 (자바 스크립트 없음)?

특정 응용 프로그램 용 타이머가 필요합니다. 시간을 기록하고 표시해야하며 요소의 innerHTML을 업데이트해야합니다.이 타이머를 작동시키는 방법에 대해 어떻게 생각합니까?

대단한 도움에 감사드립니다! 전화가 깨어 앱이 포 그라운드로 돌아갑니다 때 계산 시작했을 때 당신이 지금하고 사이 DIFF을 알 필요가 있도록

답변

6
var startTime; 
var timer; 

function displayTime() { 
    var now = new Date(); 
    var timeDiff = new Date(now - startTime); // constructor uses UTC, so use UTC date functions from here on 
    var hours = timeDiff.getUTCHours(); 
    var mins = (timeDiff.getUTCMinutes() < 10) ? '0' + timeDiff.getUTCMinutes() : timeDiff.getUTCMinutes(); 
    var secs = (timeDiff.getUTCSeconds() < 10) ? '0' + timeDiff.getUTCSeconds() : timeDiff.getUTCSeconds(); 
    document.getElementById('time').innerHTML = hours + ':' + mins + ':' + secs; 
    if (hours >= 2) clearInterval(timer); 
} 

window.onload = function() { 
    startTime = new Date(); 
    timer = setInterval(displayTime, 1000); 
} 

startTime 여전히 원래의 시간이 될 것이다. 잠 들어있는 동안 디스플레이를 업데이트 할 필요가 없습니다. 원래 시작 시간 이후로 시간을 알아야합니다.

+0

그래서, 내가 전에이 배열을 가지고 있지만 방법을 사용하여에 논리를 전달하는 방법을 볼 수 실패하고있다 : 기능 타이머() { \t var에 digiformat = ""; \t if (i> 3599) \t {\t var H = Math.floor (i/3600); \t \t var H = Math.floor (i/3600); 다른 \t} \t \t \t \t {var에 H = 0; \t} \t \t var에 M = 1 - (H의 * 3600) \t \t (M> 59) \t { \t \t M = Math.floor (M/60) 다른 \t} \t 경우 { \t \t \t M = 0} \t \t \t var에 S = 1 - (60 * M의) \t,174,\t if (H <10) \t { \t \t H = "0"+ H; \t} \t 경우 (M <10) { \t \t \t M = "0"+ M; \t} \t (S <10) { \t \t \t S = "0"+ S 경우; \t} \t document.getElementById ('time'). innerHTML = H + ":"+ M + ":"+ S; exe ​​= setTimeout ('timer()', 1000); i ++; \t if (H> = 2) { \t \t clearTimeout (exe); \t} \t –

+0

SO SORRY! 나는 당신이 읽을 수 있도록 내 대답을 멋지게 형식화하는 법을 모른다. –

+0

@ 벤 - 아무런 문제가 없다. 예제를 업데이트하여 'timeDiff'를 구문 분석하여 표시합니다. – nekno

관련 문제