我正在为 iPad 开发一个小型 HTML5 Web 应用程序,旨在以全屏模式工作(即,它具有专有的 Apple 元标记,已添加到主屏幕):
<meta name="apple-mobile-web-app-capable" content="yes" />
该应用程序基本上通过 AJAX 获取一些数据并将其呈现给用户。AJAX 数据是外部的(来自不同的域、不同的服务器)。我有跨域请求的系统设置,它们在在线模式下工作。换句话说:静态数据位于服务器A上,动态数据位于服务器B上。
我创建了一个适当的缓存清单文件,列出了站点的所有静态内容(HTML、CSS、图像、JS),然后将NETWORK: *
部分放在最后——这样总是从网络中检索所有动态内容(AJAX)。如果请求失败,应用程序会“优雅地”失败,显示一些虚假内容。
通过上述设置,会发生以下情况:
- 如果我在线运行应用程序,一切正常;)
- 如果我在 iPad 上禁用 WiFi(纯离线模式),一切都会按预期工作 - 应用程序会退回到离线内容
- 如果我再次连接到网络,但将静态内容服务器脱机(缓存了所有内容的服务器),应用程序将无法启动;在闪屏中花了一段时间后,它向我显示了一个弹出窗口
<app> could not be opened because it could not connect to the server.
;我可以选择关闭或重试。
上面的第 3 点让我抓狂,因为这是我开始摆弄应用程序缓存的唯一原因。如果无法访问清单文件,为什么 iPad Web 应用程序不回退到缓存的内容?(不是404,服务器离线)
HTML5 iphone离线webapp的答案完全不正确吗?如果没有,我怎样才能在 iPad 上实现这种行为?