Sono d'accordo con keyboardP che probabilmente si dovrebbe essere utilizzando setInterval
invece di setTimeout
. Tuttavia, per rispondere alla domanda originale, il motivo per cui si verificano problemi con il timer dipende dalla logica di ripetizione. Non usare:
var diff = (new Date().getTime() - start) - time;
window.setTimeout(instance, (100 - diff));
Non è necessario cercare di conto per tempo di esecuzione (che presumo sia quello che stavi cercando di fare con diff
). Basta assumere è trascurabile e l'uso:
setTimeout(instance, 100);
E il problema viene risolto, come si può vedere in this jsFiddle.
Prima clicco la demo, sarà in crash il mio browser? ': P' –
Il contatore si azzera in Firefox ... –
haha no, non è un ciclo infinito. Sto aggiornando il testo di una span con il valore corrente del timer ... quindi è l'unica cosa che viene incasinata, vedrai. – stursby