HTML5/JS - 检查应用程序是否脱机

Ale*_*sky 12 javascript html5 offline-mode offline-caching

我正在测试HTML5离线应用程序.为此,我将停止本地Web服务器(IIS)并打开应用程序.它加载正常,但一旦请求服务器端API方法就失败了.

我想阻止它,而不是$ .get('/ api/method')从我的本地存储中读取数据.但我可以找到任何设施来了解我的应用程序是否脱机.

if (/* online */) {
  // fire ajax
} else {
  // ask localstorage
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用navigation.onLine但似乎总是如此(至少我可以在Chrome中看到).

你有什么建议吗?

编辑:考虑到当前的答案.应用程序清楚地知道它是脱机的,因为它根据cache.manifest占用资源.这对我来说太荒谬了,客户需要做任何诡计和伎俩.我认为应该有一种简单的方法来检查当前模式.

rob*_*rtc 13

一种简单的检查方法是在清单中添加一个回退部分,如下所示:

FALLBACK
/online.js /offline.js
Run Code Online (Sandbox Code Playgroud)

然后在online.js您将全局变量设置为true时,offline.js将其设置为false,online.js只要您计划进行某些联网并在回调中有条件地执行任何处理,您只需通过Ajax 请求.在此期间,维护您的所有app数据客户端.

另一种方法是按照Remy Sharp的建议进行阻塞填充navigator.onLine.