2014-10-27 24 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