0

事实

我正在构建一个具有离线模式的 HTML 5 响应式网站。为此,我使用带有 FALLBACK 部分的清单文件和浏览器的 localStorage 来存储用户决定保存以供离线访问的页面。

一切都在桌面或 iPhone 上运行良好(尚未在 Android 上测试过),除非我在清单文件中添加了 NETWORK 部分。

为什么我需要 NETWORK 部分?我需要它来让 Google Analytics 工作——否则我网站的用户将不会被跟踪,即使用户在线(这就是 HTML5 applicationCache 的工作方式)。所以这确实是强制性的。

在桌面上,这不是问题,我可以关闭 Internet 连接,网站以离线模式运行。

但是,在 iPhone 上,如果我关闭 Internet 连接(例如打开飞行模式),一旦添加了 NETWORK 部分,我将无法启动 Web 应用程序(意味着我的网站已添加到主屏幕)到清单:iOS 提示我打开 Internet 连接,并且应用程序正在关闭。如果清单文件中没有 NETWORK 部分,则一切正常。

我的问题

是双重的:

1)虽然我可以理解这种行为背后有一些逻辑,但对我来说,如果有最轻微的访问尝试,你就不能让 iOS 网络应用程序在离线模式下工作,这似乎很奇怪(嗯,几乎难以置信)网络 - 我已经阅读了大量关于 iOS 上的 applicationCache 的教程,但没有人提到 NETWORK 部分与飞行模式不兼容。 那么,有没有人可以确认(或确认)我正在经历的事情?

2)如果确实存在这种不兼容,我能想象的唯一解决方法是在服务器端动态构建清单文件,仅为桌面用户添加一个 NETWORK 部分 - 但这意味着忘记跟踪移动在线用户,这是不可接受的。 那么,有人有更好的主意吗?

4

1 回答 1

0

哎呀,我应该在 SO 上看起来更好:这已经在这里得到了回答:

https://stackoverflow.com/a/6285955/2251905

按照上述答案中概述的步骤解决了问题。这与 NETWORK 部分无关(谢天谢地,这是正确的!),但与 iPhone 上似乎令人讨厌的 iOS 错误有关。

于 2013-05-16T11:47:12.717 回答