1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| <html>
<head>
<title>Test du timestamp</title>
</head>
<body>
<div id="debug" > </div>
<br>
<div id="time1" > </div>
<script>
var compteur=0;
var seconde=1000;
var testing=Array();
testing[0]='';
var now=new Date();
var t1=now.getTime();
testing[0]=t1;
var after_1min=new Date();
var t2=testing[0]+(60*1000);
after_1min.setTime(t2);
var temp_ideal=after_1min.getTime();
testing[1]=t1;
var time0_report=now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+":"+now.getMilliseconds();
var time1_report=after_1min.getHours()+":"+after_1min.getMinutes()+":"+after_1min.getSeconds()+":"+after_1min.getMilliseconds();
document.getElementById('debug').innerHTML=compteur+ " à la fin du test, le timestamp idéal devrait être: "+temp_ideal+" (test démarré à "+time0_report+" & normalement finit à "+time1_report+")";
function stop_timer(value)
{
// clearTimeout(timer);
clearInterval(value);
}
var globalScope = new Array();
/* A. Constructor */
function TimeTicker()
{
document.getElementById('time1').innerHTML="départ: "+testing[0]+" & le compteur est : "+compteur;
if( document.all )
{
/* A.3.1.1 - make a reference to the current object and saved in the global scope array
* to use later to correct the scope.
*/
globalScope[ this.uniqueId ] = this;
this.timer = setInterval( 'ieIntervalHandler("' + this.uniqueId + '","updateTime")', 1000 );
}
else
{
/* A.3.2 - Mozilla */
this.timer = setInterval ( function( that ) { that.updateTime(); }, 1000, this );
}
}
/* B. This function is to update the time value somewhere on the screen */
TimeTicker.prototype.updateTime = function ()
{
compteur=compteur+1;
var now=new Date();
var t3=now.getTime();
current_delay=t3-testing[1];
diff_time=t3-testing[0];
testing[1]=t3;
var fix_diff_time=Math.round(diff_time/seconde)*1000;
decalage=diff_time-fix_diff_time;
document.getElementById('time1').innerHTML=compteur+" & temps total écoulé (en millisecondes) : "+diff_time+" & il devrait être : "+fix_diff_time+" / intervalle actuel ="+current_delay+" / décalage sur le global ="+decalage;
if (compteur==60)
{
var now_after_1min=new Date();
var temp_ideal=now_after_1min.getTime();
var time2_report=now_after_1min.getHours()+":"+now_after_1min.getMinutes()+":"+now_after_1min.getSeconds()+":"+now_after_1min.getMilliseconds();
diff_time=t2-testing[0];
document.getElementById('time1').innerHTML=compteur+ " -> fin du test : le timestamp vaut "+t3+" ("+time2_report+") / decalage ="+decalage;
stop_timer(this.timer);
return false;
}
}
function ieIntervalHandler( id, strFunc )
{
/* D.1 - correct the scope then make the call */
var scope = globalScope[id];
eval( "scope." + strFunc + "()" );
}
timer=new TimeTicker;
</script>
</body>
</html> |
Partager