27

我一直在做很多工作,让一些 Web 应用程序使用 HTML5 清单在 iOS 上脱机工作。我遇到了其他人遇到的典型问题并修复了它们,一切似乎都运行良好——除了我将网络应用程序保存到我的 iPhone 4 上的桌面的情况。

如果我这样做然后启用飞行模式,我会在尝试通过主屏幕访问应用程序时收到以下警报:“您的应用程序名称无法打开,因为它没有连接到互联网。” 离线时通过 Safari 浏览器访问该应用程序可以正常工作。

如果有人知道这是否是我的错误,或者甚至是解决问题的可能性很小,请告诉我。

即使下载新的金融时报网络应用程序(通过广泛的 localStorage 支持做得很好)在从主屏幕离线访问时也会导致错误。

技术规格:使用 iOS 4.3.3 运行 iPhone 4(但在 4.3.2 中也看到了问题)

4

3 回答 3

16

阅读评论(尤其是 Rowan 的)后,我进行了更多测试并找到了答案:

不,Apple 没有禁用保存到主屏幕的 Web 应用程序的 HTML5 离线功能,它在大多数情况下都有效。有一个错误会使其无法正常工作。它似乎与您的清单设置没有任何关系(除非它可能在某一时刻下载了错误的清单或不完整的清单。)我们不知道它有多普遍,但解决方法是清除您的移动 Safari 缓存。

以下是步骤:

  1. 关闭网络应用程序(确保它没有在后台停留)。
  2. 清除移动 Safari 缓存:设置 > Safari > 清除缓存
  3. 重新打开应用程序(用于缓存)。
  4. 再次关闭 Web 应用程序(确保它不会停留在后台)。
  5. 启用“飞行模式”:设置 > 飞行模式
  6. 重新打开了应用程序。

它现在应该可以脱机工作了。如果不是,那么它可能是您的应用程序中的一个单独的清单问题。看起来像浏览器缓存的一个奇怪的错误 - 或者缓存完全已满?谁知道,但这就是答案。多谢你们。

于 2011-06-08T22:19:01.823 回答
2

将此添加到您的 html 中:

https://web.archive.org/web/20170201180939/https://jonathanstark.com/blog/debugging-html-5-offline-application-cache?filename=2009/09/27/debugging-html-5-离线应用程序缓存/

我发现它非常有用——即使我已经创建了我的清单文件并将它与其他人的清单进行了比较,这个 JavaScript 调试脚本给了我一个我永远找不到的线索。我的清单中显然有语法错误……长话短说,我不得不删除所有内容并一一添加每个文件/图像的路径。最终结果是一样的,但它起作用了......多么奇怪!空格/注释会影响文件的语法吗?

于 2011-07-25T12:39:22.943 回答
2

iOS 似乎对离线时的加载问题非常敏感。

在我正在处理的页面上脱机时,我收到了您的“无法打开”错误。问题原来是该页面创建了一个指向没有 AppCache 的站点的 iframe。删除这些 iframe 解决了这个问题。

就我而言,我使用它来处理它,window.navigator.standalone它告诉您您是否在 iOS 主屏幕应用程序中运行。代码如下所示:

if (!navigator.standalone) insertFrames();
于 2016-10-19T05:05:07.030 回答