2014-10-27 21 views
0

我有一个网页,其中有一个比赛结果自动收报机移动(如字幕)。我有一个客户端JavaScript队列(简单地说是一个对象数组),它每5秒添加一次从服务器端(websocket)检索到的最新唯一结果,并将结果首先添加到队列中,然后从队列中将结果添加到结尾的工作正常的自动收报机磁带。如何自动捕捉(系统)日期更改并刷新JavaScript中的页面?

例如:一旦一场比赛现在完成,它的结果会自动添加到收报机磁带。

我的问题是,当日期在时钟更改时,我想刷新页面,否则该队列仍然有昨天的数据,以便它们显示在自动收报机磁带中。但我只想显示今天的数据。 那么如何在JavaScript中捕获“更改日期”事件,以便我可以相应地清除我的队列。 真的很感谢在这方面的帮助。我可以使用JavaScript或jQuery来满足这个要求。

回答

1

可以计算时间至午夜,然后设置一个函数来执行重新加载页面或做任何当时

runAtMidnight(window.location.reload); 

function runAtMidnight(fn){ 
    var midnight = new Date(); 
    midnight.setHours(24, 0, 0, 0); 
    var timeUntilMidnight = midnight.getTime() - Date.now(); 
    setTimeout(fn, timeUntilMidnight); 
} 

注:本使用用户的本地时间....

+0

很好,这是一个很好的解决方案...请告诉我是否有可能只重新加载特定的DIV,而不是在日期改变时刷新整个页面。 – 2014-10-27 05:51:23

+0

无论第一次使用什么函数来加载div中的数据,都可以再次运行它们。我会想象有什么最终会填充'$ scope'd的值。你可以重新运行它,它会更新'$ scope'd值,并且角将处理更新视图。不要忘记'$ apply'(或者如果你在范围中有'$ timeout'(通过DI),使用'apply'代替'setTimeout') – TheSharpieOne 2014-10-27 13:39:13