我意识到如果我使用新的Date对象,系统时间的变化不会立即反映在javascript,event中。它只是每分钟更新一次。
var fakeElapsed = 0;
$(document).ready(function(){
var oldTime = 0;
function fakeTimeLoop(time){
fakeElapsed+=(time-oldTime);
oldTime = time;
$("div").html(fakeElapsed);
}
var clock = new Date();
var start = clock.getTime();
oldTime = clock.getTime();
setInterval(function(){
var clock2 = new Date();
var end = clock2.getTime();
var elapsed = end-start;
if(elapsed%5===0){
fakeTimeLoop(end);
}},
1
);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div></div>
</body>
时间码,如果您将时间向前(或向后),则需要一分钟来改变经过的时间。
反正有没有每秒更新到系统时间?
编辑:对于那些困惑的人来说,系统的变化并没有立即反映在Chrome和Opera上,但是在IE和Mozzila上,它会立即反映出来,我假设它的命令是为了避免每次需要建立一个新日期时进行昂贵的系统调用宾语。
我在寻找:无论如何要在Chrome / opera中获取当前系统时间或立即检测到系统时间的变化?
我并不完全清楚你要完成什么,但是你的setInterval
被编程为每毫秒执行一次(第二个参数是以毫秒为单位),但是browsers treat any value less than 10 as equal to 10。即使有这个限制,时间也不能保证精确,所以函数可以很好地执行每11,12,13等毫秒。