2011-08-26 17 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(''); 
    } 
} 

Yukarıdaki kod, Firefox'ta beklenenleri yapar. Her saniye "geri sayım" elemanında azalan bir sayı görüntülenir.Geri sayım sayacı Chrome/Safari'de tam olarak görüntülenmez, ancak Tamam seçeneğinde değil. Firefox'taki sorun yok.

Safari ve Chrome'da, kod düzgün şekilde çalışıyor, ancak ekran elemanı değişmiyor. Başka bir şey olursa (tarayıcı penceresini yeniden boyutlandırma gibi), öğeler düzgün bir şekilde güncellenir.

Bu, bir çeşit optimizasyon veya iş parçacığı tabanlı bir soruna benziyor, ancak bir çözüm bulamıyorum. Chrome, Safari ve Firefox'ta da benim için iyi çalışıyor.

+4

benim için iyi çalışıyor krom http://jsfiddle.net/br4uK/ –

+0

Benim için de iyi çalışıyor. Chrome ve Safari’nin hangi sürümünü kullanıyorsunuz? –

+0

İlginç. JQuery'nin animasyon yığınıyla ilgili bir şey olabilir - Bu uyarıyı buldum: "requestAnimationFrame() öğesinin yapısı nedeniyle, bir setInterval veya setTimeout döngüsünü kullanarak animasyonları sıralamamalısınız." Bu nesne hareket etmiyor olsa da, diğer bazı nesnelerimiz ... –

cevap

0

Belki de sonucunu görüntülemek için html etiketlerini kullanmak ihtiyacım yok bu durumda, metin() daha iyi html() çalışabilir.

deneyin kullanarak yerine

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

html().

OBS: Operasyonel sisteminizdeki bazı kararsız çocukların da tarayıcı oluşturma işlemini etkileyebileceğini düşünüyor. Birisi bunu onaylayabilir veya reddedebilir mi?