Tengo un temporizador que cuenta hacia atrás cada segundo. Funciona de maravilla hasta que el usuario abre 3 o 4 pestañas de mi sitio, en cuyo punto el temporizador de la ficha más nueva tiene una velocidad doble o triple. Actualmente solo puedo reproducir el error en IE8. Anteriormente estaba usando setInterval, y también podía reproducir el error en Firefox.¿Por qué mi setTimeout se acelera cuando tengo varias pestañas abiertas en mi sitio?
En realidad estoy usando FBJS (Javascript de Facebook), así que solo daré un pseudocódigo.
function countDown() {
...
setTimeout(function() { countDown() }, 1000);
}
countDown();
Sin embargo, lo que realmente estoy buscando es más teórica. Sé que los navegadores pueden probar y jugar "ponerse al día" con setInterval, pero ¿cómo pueden las múltiples pestañas causar este comportamiento para setTimeout?
¡Guau, dar a las funciones nombres aleatorios hizo el truco! ¿Cómo es posible que JavaScript en diferentes ventanas se pueda afectar entre sí? – lamplighter
Bizarre, ¿verdad? Supongo que debe ser algo así como lo que estaba diciendo, "alisar" el código en algún lugar en las entrañas del navegador identificando las funciones solo por nombre (bueno, probablemente por sitio + nombre) y no diferenciando entre las diferentes pestañas/ventanas. Puede valer la pena un informe de error en alguna parte, realmente. – chaos
Esta puede ser una solución alternativa sin PHP: http://stackoverflow.com/questions/6112671/settimeout-speeds-up-with-multiple-tabs/6112864#6112864 – namuol