如何进行"元刷新",但仅限于页面存在

时间:2017-02-15 00:45:55

标签: javascript

我的团队使用了一个简单的SPA,使用angular1。它从REST调用中获取大部分数据,但我也有一个"元刷新"标记偶尔重新加载整个页面,以确保用户偶尔获得小的功能更改。没有必要让这个可选,它应该只是重新加载页面。

此策略的轻微烦恼是,当用户有时断开网络连接(例如,在工作和家庭之间旅行)时,页面重新加载失败,并且它进入错误状态。只是强制重新加载页面很容易,但我希望这样做更清洁,只有在它可以到达页面时才会重新加载页面。

我注意到了https://davidwalsh.name/meta-refresh-javascript的建议。这使用javascript进行重新加载,但它不以现有页面为条件。

这是否存在合理的变化,只有当它无法到达页面时才会跳过重新加载,然后在可以的时候重新加载?

2 个答案:

答案 0 :(得分:1)

navigator对象有一个您可以检查的属性online

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

首先发出ajax head请求,如果成功则执行刷新

答案 1 :(得分:0)

根据我的需要,我最终在我的控制器中实现了一个“心跳”方法,该方法调用一个Heartbeat服务,该服务向我的REST服务发出HEAD请求,如果状态为200则返回true。

然后我从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>