2017-02-15 16 views
0

我有一個簡單的SPA,由我們的團隊使用,使用angular1。它從REST調用中獲取大部分數據,但我也有一個「元刷新」標記來偶爾重新加載整個頁面,以確保用戶偶爾會發生小的功能更改。沒有必要永遠使這個可選的,它應該只是重新加載頁面。如何做「元刷新」,但只有當頁面存在時

這種策略的一個小麻煩是,當用戶有時會斷開網絡(例如在工作和家中之間旅行)時,頁面重新加載失敗,並進入錯誤狀態。只需強制重新加載頁面很簡單,但我希望這樣做更簡潔一些,以便只在頁面可以訪問頁面時才重新加載頁面。

我注意到https://davidwalsh.name/meta-refresh-javascript的建議。這使用JavaScript來重新加載,但它不是在現有頁面上的條件。

是否有一個合理的變化,它會簡單地跳過重新加載,當它無法到達頁面,然後再次重新加載時,它可以?

+0

無法停止在JavaScript中觸發元刷新 – epascarello

回答

0

對於我的需求,我最終實現了「心跳「方法,該方法調用心跳服務,該服務對我的REST服務執行HEAD請求,如果狀態爲200,則返回true。

然後我從第e HTML這樣的:

<script type="text/javascript"> 
    window.setInterval(function() { 
     // Call controller method to call heartbeat service. 
     if (angular.element(document.body).scope().heartbeat()) { 
      window.location.reload(); 
     } 
    }, 900000) 
</script> 
1

navigator對象有一個屬性online,你可以檢查

if(window.navigator.online){ 
    window.location.reload(); 
} 

還是先建立一個AJAX head請求,如果成功做了刷新

+0

最後一點是一個有趣的想法。 HTML由REST調用所在的主機提供,因此這可能是一種有效的策略。 「window.navigator」是特定於瀏覽器的嗎? –

+0

導航器不是瀏覽器特定的。也是包含地理位置服務的對象 – charlietfl