2010-08-05 3 views
32

Ecco un tipo strano:alert JavaScript() avanzare ora di sistema da 12ms

stavo lavorando sulla sincronizzazione un timer JavaScript con un server remoto e ho notato il mio timer (in base all'oggetto Date()) stava guadagnando circa 12ms rispetto a il mio server remoto su ogni pagina si aggiorna. L'ho ristretto alla funzione JavaScript alert().

Ho creato il seguente test e verificato con 2 orologi sincronizzati che il tempo del mio sistema avanzerà di 1 secondo ogni 83-84 aggiornamento della pagina. Qualcuno l'ha visto prima?

<html> 
<head> 
</head> 
<body> 
<script type="text/javascript"> 
    alert('hello'); 
</script> 
</body> 
</html> 

Sto usando IE7 su XP SP3. Per favore, dimmi che non sto impazzendo!


EDIT:

io non sono davvero preoccupato per la precisione del timer javascript. Il vero problema è che la chiamata alla funzione JavaScript alert() sta facendo avanzare il tempo di sistema effettivo di 12 ms.

+1

Questo capita di essere su una macchina virtuale? –

+0

Sai che c'è un ritardo tra l'invio e la ricezione di dati da un server? – alopix

+0

@alopix Nel suo esempio non c'è send e receive, questo è un bug piuttosto interessante se vero. – robertc

risposta

2

Beh,

molto probabilmente si sono pazzi, dal momento che si contano su timer JavaScript per essere precisi.

Questo spiega un sacco di che: http://ejohn.org/blog/accuracy-of-javascript-time/

+12

Ma l'OP afferma che il suo * tempo di sistema * viene alterato. Questo è qualcos'altro, non è vero? –

+2

Quello di cui sto parlando non è un ritardo nel mio timer javascript - Il mio attuale orario di sistema viene modificato dall'esecuzione della funzione alert(). Ho aggiornato questa pagina un paio di centinaia di volte e ora, quando apro l'orologio del mio sistema, sono 5 secondi più avanti del mio orologio che mi sono appena sincronizzato con il mio sistema. – Derek

+2

@Derek: ho sempre saputo che JavaScript è ** malvagio **;) (* mi dispiace di non aver fornito un commento più utile *). –