2011-08-26 6 views
6
function countDownRound() { 
    if(myRoundTimeRemaining >= 0){ 
     var secs = myRoundTimeRemaining; 
     if(secs < 10) 
     { 
      secs = "0" + secs; 
     } 
     $("#countdown").html(':'+secs); 
     CountdownTimer = setTimeout(countDownRound, 1000); 
     myRoundTimeRemaining--; 
    } 
    else{ 
     $("#countdown").html(''); 
    } 
} 

위의 코드는 Firefox에서 예상 한 바를 수행합니다. 매초마다 "카운트 다운"요소에 감소하는 숫자가 표시됩니다.카운트 다운 타이머가 Chrome/Safari에서는 올바르게 렌더링되지 않지만 Firefox에서는 정상적으로 렌더링되지 않습니다.

Safari 및 Chrome에서 코드는 제대로 실행되지만 화면 요소는 변경되지 않습니다. 브라우저 윈도우의 크기 변경과 같은 다른 일이 발생하면 요소는 올바르게 업데이트됩니다.

이것은 일종의 최적화 또는 스레드 기반 문제인 것처럼 보이지만 솔루션을 찾을 수 없습니다.

+4

은 크롬에서 잘 작동합니다. http://jsfiddle.net/br4uK/ –

+0

나를 위해 잘 작동합니다. 사용중인 Chrome 및 Safari의 버전은 무엇입니까? –

+0

흥미 롭습니다. JQuery의 애니메이션 스택과 관련이있을 수 있습니다. "requestAnimationFrame() 특성으로 인해 setInterval 또는 setTimeout 루프를 사용하여 애니메이션을 대기열에 넣으면 안됩니다."라는 경고가 나타났습니다. 이 객체는 애니메이션이 아니지만 일부 다른 객체는 다음과 같습니다. –

답변

0

나를 위해 Chrome, Safari 및 Firefox에서도 잘 작동합니다.

아마 당신이 당신의 결과를 표시 할 HTML 태그를 사용할 필요가 돈`t이 경우, 텍스트() 더 이상 HTML()를 작동 할 수 있습니다.

에 한번 사용하는 대신

$("#countdown").text(':'+secs); 

HTML().

OBS : 운영 체제의 불안정한 일부 아이들도 브라우저 렌더링에 영향을 줄 수 있습니다. 누군가 확인하거나 부인할 수 있습니까?

관련 문제