2011-08-26 148 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標記來顯示你的結果,文本()可以更好地工作比HTML()

使用try

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

,而不是HTML()。

OBS:看起來你的operacional系統上的一些不穩定的孩子也會影響瀏覽器渲染。有人可以證實或否認這一點嗎?

相關問題