Mul*_*rry 34 javascript html5 web-applications mobile-safari ipad
我一直在为iPad开发移动网络应用程序,我在测试代码时遇到了一个问题.
偶尔,看似随机,iPad将停止正确更新我写的所有JS库.更新一些代码并发布更改后,我会注意到一些文件已经正确更新,而其他文件没有.在众多缓存清除,电源循环和wifi切换之后,这种行为仍然存在.
如果我在safari中加载应用程序我没有问题,但是当我从应用程序的主屏幕图标加载时,问题会重新出现.我已经完成了简单的测试,例如向库中添加警报线,除了在mobile-web-app窗口之外,该警报在没有任何问题的情况下触发.然后,看似随机,问题就消失了,有时需要5分钟,有时需要一个小时.
无论应用程序是否使用清单文件,我都会看到此行为.我还试图通过更新清单文件来刷新这些遗留文件以强制重新缓存,但问题仍然存在.
有谁知道这是否是iPad的已知问题?我可以做些什么来解决这个问题吗?
我得到了解决方案!
但首先问题是:iPad和iPhone在打开应用程序时没有刷新缓存.即使删除应用程序,清除safari缓存,重新启动设备等等也无法正常工作.
这是解决方案...... taadaa!
你的清单文件必须改变.如果更改,iPad/iPhone将重新加载缓存.所以只需在清单文件中写一个版本号,并在更改内容时更改它:
# Version: 1.2
Run Code Online (Sandbox Code Playgroud)
因此,完整的清单文件可能如下所示:
CACHE MANIFEST
# Version 1.5
NETWORK:
*
CACHE:
index.html
jquery-1.7.2.min.js
images/logo.jpg
Run Code Online (Sandbox Code Playgroud)
它甚至可以重新加载未写入清单文件的图像.我试了好几次.
顺便说一句.别忘了用http://manifest-validator.com查看你的清单文件
我的来源是如何关于离线Web应用程序的非常酷:http://gregsramblings.com/2012/05/28/html5-application-cache-how-to/
它还说你可能需要两次启动你的应用程序:
如果清单已更新,浏览器将下载缓存文件列表中的所有文件,但是,此时原始内容已经加载(请记住它已经缓存,因此加载超快!).
但它总是在第一次尝试时对我有用.
小智 6
解决这个问题.添加指向Web App本身的链接,如...
<a href="javascript:top.frames.location.reload();">refresh</a>
Run Code Online (Sandbox Code Playgroud)
它就像iPhone/iPad Safari地址栏上的重新加载按钮一样!
我在 iPad 上的 Web 应用程序遇到了完全相同的问题 - 有时,在独立模式下运行的 Web 应用程序随机不会刷新特定资源(HTML/CSS/JS 文件),尽管杀死了所有可能的应用程序,清除Safari 缓存和历史记录、重新启动、重新启动 WiFi 连接、刷新或删除manifest文件或将设备放入微波炉中;即使使用大锤也被证明是徒劳的。
虽然我还没有找到一种“彻底”的方法来修复它,但总有一种解决方法 -重命名资源。
只需更改不刷新文件的名称即可。如果您遇到问题(比如说foobar.js不更新),请将其重命名为foobar2.js并更新其他文件中对此资源的引用。这当然可能会很痛苦(尤其是在经过一周的开发之后foobar12.js),但在我们看到 iOS 的官方修复或可用的刷新技术之前,这是我所知道的获得它的唯一方法启动并运行。
| 归档时间: |
|
| 查看次数: |
24968 次 |
| 最近记录: |