Ok, kombinowałem w ciut inną stronę.
Kod
<script>
var timeServer = {
year: <?=date('Y');?>
,month: <?=date('m');?>
,day: <?=date('d');?>
,hour: <?=date('H');?>
,minute: <?=date('i');?>
,second: <?=date('s');?>
}
,interval
,paused
,changeTime = function(i)
{
i = i || 1;
now.setSeconds(now.getSeconds() + i);
console.log(now);
}
,now = new Date(timeServer['year'], timeServer['month'], timeServer['day'], timeServer['hour'], timeServer['minute'] ,timeServer['second'], 00); //aktualny czas pobrany z serwera
interval = setInterval(changeTime, 1000);
document.addEventListener('visibilitychange', function()
{
if(document.hidden)
{
clearInterval(interval);
paused = Date.now();
}
else
{
changeTime(Math.floor((Date.now() - paused) / 1000));
interval = setInterval(changeTime, 1000);
}
console.log('visibilitychange', now);
}, false);
</script>