可以在(HTML5)浏览器中使用离线模式应用吗?

ohh*_*hho 45 html5 offline-mode

是否有可能建立一个应用程序的浏览器?申请表示:

1 浏览器和远程应用程序服务器之间存在连接(在线模式):

  • 应用程序以典型的基于Web的模式运行
  • 应用程序将必要的数据存储在离线存储中,以便在离线模式下使用(2)
  • 应用程序同步/推送数据(在脱机模式下捕获)在从脱机模式恢复到在线模式时返回到服务器

2如果浏览器和远程应用程序服务器之间没有连接(脱机模式):

  • 应用程序仍然会运行(javascript?)
  • 应用程序将向用户显示数据(离线存储)
  • 应用程序可以接受来自用户的输入(并在离线存储中存储/附加)

这可能吗?如果答案是肯定的,是否有任何(Ruby/Python/PHP)框架正在构建?

谢谢

wum*_*ump 40

是的,这是可能的.

  • 您需要使用Javascript编写应用程序,并以某种方式检测浏览器是否处于脱机模式(最简单的方法是偶尔轮询服务器).(编辑:请参阅注释以获得更好的方法来检测离线模式)

  • 确保您的应用程序仅包含静态HTML,Js和CSS文件(或在脚本中手动设置缓存策略,以便您的浏览器在脱机模式下记住它们).页面更新是通过JS DOM操作完成的,而不是通过服务器完成(ExtJS这样的框架http://www.extjs.com会帮助你)

  • 对于存储,请使用PersistJS(http://github.com/jeremydurham/persist-js)等模块,该模块使用浏览器的本地存储来跟踪数据.恢复连接后,与服务器同步.

  • 您需要预先缓存图像和其他使用的资产,否则如果您之前没有使用它们,它们将在脱机模式下不可用.

  • 再说一遍:你的应用程序的大部分需要是javascript,如果服务器无法访问,PHP/Ruby/Python框架将帮助你.服务器可能保持尽可能简单,类似REST的AJAX API来存储和加载数据.

  • 您可以使用navigator.onLine来测试浏览器是否在线 (13认同)
  • navigator.onLine在许多浏览器中都没有给出准确的值.例如,请参阅http://code.google.com/p/chromium/issues/detail?id=7469. (5认同)
  • 在Firefox navigator.onLine中,如果用户将浏览器设置为脱机模式,即使它没有连接,也只返回false https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine (3认同)

has*_*seg 15

Mark Pilgrim(在线)书籍Dive Into HTML5中"让我们脱机"一章是使用HTML5技术编写离线Web应用程序的一个非常好的概述.

注意:由于Mark Pilgrim的原始Dive Into HTML5链接似乎已经失效.

副本现在可以发现这里在其他地方.