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

El código anterior hace lo que se espera, en Firefox. Cada segundo se muestra un número decreciente en el elemento "cuenta regresiva".Temporizador de cuenta atrás no hace que la derecha en Chrome/Safari, pero está bien en Firefox

En Safari y Chrome, el código se ejecuta correctamente, pero el elemento en pantalla no cambia. Si sucede algo más (como cambiar el tamaño de la ventana del navegador), los elementos se actualizan correctamente mientras.

Parece una especie de problema de optimización o de subprocesos, pero no puedo encontrar una solución.

+4

funciona bien para mí en Chrome http://jsfiddle.net/br4uK/ –

+0

Funciona bien para mí también. ¿Qué versión de Chrome y Safari estás usando? –

+0

Interesante. Podría tener algo que ver con la pila de animación de JQuery. Encontré esta advertencia: "Debido a la naturaleza de requestAnimationFrame(), nunca debes poner en cola animaciones usando setInterval o setTimeout loop." Aunque este objeto no está animando, algunos de nuestros otros objetos son ... –

Respuesta

0

Funciona bien para mí también en Chrome, Safari y Firefox.

Tal vez en este caso que no necesito usar etiquetas HTML para mostrar el resultado, texto() puede funcionar mejor que html().

Intente utilizar

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

lugar html().

OBS: Parece que algunos niños con inestabilidad en su sistema operacional también pueden afectar el rendimiento del navegador. ¿Podría alguien confirmar o negar esto?

Cuestiones relacionadas