Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:苹果是否对保存到主屏幕的web应用禁用HTML5离线功能?_Ios_Html_Offline Browsing_Offline Caching - Fatal编程技术网

iOS:苹果是否对保存到主屏幕的web应用禁用HTML5离线功能?

iOS:苹果是否对保存到主屏幕的web应用禁用HTML5离线功能?,ios,html,offline-browsing,offline-caching,Ios,Html,Offline Browsing,Offline Caching,我一直在做大量工作,使用HTML5清单让一些web应用在iOS上离线工作。我遇到了其他人都遇到的典型问题,并解决了这些问题,除了我在iPhone4上将web应用程序保存到桌面的情况外,一切似乎都很正常 如果我这样做,然后启用飞行模式,当尝试通过主屏幕访问应用程序时,我会收到以下警报:“您的应用程序名称无法打开,因为它未连接到internet。”通过Safari浏览器访问应用程序在脱机时工作正常 如果有人知道这是否是我的错误,甚至是解决问题的可能性很小,一定要告诉我 即使下载新的《金融时报》web

我一直在做大量工作,使用HTML5清单让一些web应用在iOS上离线工作。我遇到了其他人都遇到的典型问题,并解决了这些问题,除了我在iPhone4上将web应用程序保存到桌面的情况外,一切似乎都很正常

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

如果有人知道这是否是我的错误,甚至是解决问题的可能性很小,一定要告诉我

即使下载新的《金融时报》web应用程序(在广泛的本地存储支持下做得很好),从主屏幕脱机访问时也会出现错误


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

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

不,苹果没有对保存到主屏幕的网络应用禁用HTML5离线功能,它在很大程度上是有效的。有一个bug会使它无法工作。这似乎与您的清单设置没有任何关系(除非它在某一点上下载了一个错误的清单或不完整的清单)。我们不知道它有多普遍,但修复方法是清除您的Mobile Safari缓存

以下是步骤:

  • 关闭web应用程序(确保其不会粘在后台)
  • 清除移动Safari缓存:设置>Safari>清除缓存
  • 重新打开应用程序(用于缓存)
  • 再次关闭web应用程序(确保其不会在后台停留)
  • 启用“飞机模式”:设置>飞机模式
  • 重新打开应用程序
  • 它现在应该可以脱机工作了。如果没有,那么它可能是应用程序中的一个单独清单问题。看起来浏览器缓存有一个奇怪的bug——或者缓存完全满了?谁知道呢,但这就是答案。谢谢大家。

    将此添加到您的html:


    我发现它非常有用——尽管我已经创建了清单文件,并将其与其他人的清单进行了比较,但这个JavaScript调试脚本给了我一个我从未发现的线索。我的清单中显然有语法错误。。。长话短说,我必须删除所有内容,并逐个添加每个文件/图像的路径。最终的结果是一样的,但它的工作。。。真奇怪!!!空白/注释是否会影响文件的语法?

    iOS似乎对脱机时的加载问题非常敏感

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

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

    if (!navigator.standalone) insertFrames();
    

    @尼克:肯定是阴谋:)@Mauvis Ledford我刚检查过,它在我的iPhone4 iOS 4.3.1上不起作用。我认为苹果打破了这一点,它以前就已经工作过了。@Mauvis Ledford我对进一步的调试非常感兴趣,因为我们收到了一些关于FT应用程序不能脱机工作的报告。这里的测试(在iPad4.2和4.3.3以及iPhone4.3.3上)显示该应用程序在家庭影院或码头上离线工作;我甚至试着离线,然后把它从屏幕移到码头,仍然有效!在某个地方肯定有一点巫毒与清单有关,但我不能确定这最后一点。。。(FWIW,清除缓存和数据库,然后重新启动设备,如果出现错误,似乎会让设备正常工作)。@Nick Weaver:请看下面我的答案。看起来,只要清除Safari缓存就可以了——遗憾的是,如果这种情况发生在客户身上,他们不会知道,但感谢您的提示!如果你知道这个问题有多广泛,请随时继续在这里发帖。如果这是一个流行的问题,可能会导致iOs上的离线html5应用程序死亡。请注意,FT应用程序添加了一个弹出窗口,其中包含清除缓存和重新启动设备的说明,以便脱机使用。谢天谢地,这篇文章我已经开始失去它了……在这方面有一点额外的警告:虽然它可能会改善主屏幕的情况,但清除缓存将破坏MobileSafari内的显式使用。清除缓存后,清单交换将失败,并在MobileSafari中出现未指明的错误,直到MobileSafari重新启动。大概这不会影响主屏幕应用程序,因为它们每次都会重新启动…(使用未来版本Beta的用户可能会发现这个特定的错误已经解决…)我只是想确认,遵循这些步骤也有助于解决我iPhone上的问题。我开发的同一个web应用程序在iPad上的“飞行模式”下运行良好,但iPhone抱怨“web应用程序名称无法打开,因为它没有连接到互联网。”在通过上述步骤清除移动safari缓存后,该web应用程序现在在我的iPhone上运行。此处的链接已断开。