我的团队使用了一个简单的SPA,使用angular1。它从REST调用中获取大部分数据,但我也有一个"元刷新"标记偶尔重新加载整个页面,以确保用户偶尔获得小的功能更改。没有必要让这个可选,它应该只是重新加载页面。
此策略的轻微烦恼是,当用户有时断开网络连接(例如,在工作和家庭之间旅行)时,页面重新加载失败,并且它进入错误状态。只是强制重新加载页面很容易,但我希望这样做更清洁,只有在它可以到达页面时才会重新加载页面。
我注意到了https://davidwalsh.name/meta-refresh-javascript的建议。这使用javascript进行重新加载,但它不以现有页面为条件。
这是否存在合理的变化,只有当它无法到达页面时才会跳过重新加载,然后在可以的时候重新加载?
答案 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>