-
Aiuto JavaScript
Salve a tutti, ho un piccolo problema con un mio file JavaScript nel mio gioco online.
Praticamente questo script si avvia quando un'azione viene compiuta e va alla rovescia. (esempio parte da 50 minuti.)
Però se io cambio finestra del browser nel mentre che il timer procede, quando rientro nella finestra dove ho il timer, si vede proseguire alla rovescia ma non è in tempo reale. E' come se si fermasse per il tempo che io sono stato nell'altra finestra. Aggiornando la pagina ho in realtà il tempo reale che manca.
Come posso fare per far si che resti sempre in tempo reale?
Il codice è il seguente:
Codice:
function t(){
v = new Date();
n = new Date();
o = new Date();
for (cn = 1; cn <= anz; cn++) {
bxx = document.getElementById('bxx' + cn);
ss = bxx.title;
s = ss - Math.round((n.getTime() - v.getTime()) / 1000.);
m = 0;
h = 0;
if (s < 0) {
bxx.innerHTML = "-";
} else {
if (s > 59) {
m = Math.floor(s/60);
s = s - m * 60;
}
if (m > 59) {
h = Math.floor(m / 60);
m = m - h * 60;
}
if (s < 10) {
s = "0" + s;
}
if (m < 10) {
m = "0" + m;
}
bxx.innerHTML = h + ":" + m + ":" + s + "";
}
bxx.title = bxx.title - 1;
}
window.setTimeout("t();", 999);
}
var x = "";
var e = null;
-
Il browser probabilmente "spegne" il tuo tab mentre non è in primo piano. La mossa corretta per risparmiare risorse.
Ad occhio mi sembra che il tuo codice conti alla rovescia salvando un contatore in bxx.title. Prova invece a modificare il codice in modo che salvi la scadenza all'inizio, quando il contatore comincia a muovarsi. La tua funzione può usare quel dato per calcolare quanto tempo manca ad ogni refresh, ma non rischia di "perdere il conto" mentre il tab non è attivo.