2011-09-15 99 views
1

我正在开发iPad Web应用程序,需要同时处于全屏模式和飞行模式。iPad全屏模式&&飞行模式

我们一直在使用缓存清单来存储我们需要的所有文件,但棘手的部分是,现在我们正在传递URL ie. file.html?account=234中的信息,并且当您尝试在飞行模式下链接到这样的文件时即使file.html缓存在缓存清单中,也会返回错误,说明iPad无法访问域。

iPad似乎认为file.htmlfile.html?account=234是两个完全不同的文件/ URL,因此它认为它不在缓存清单中并尝试连接到服务器。

背后所有这一切的想法是,我们在index.html从JSON文件中file.html显示帐户列表,然后(我们得到了account PARAM与jQuery $.url().param()插件),并建立从JSON文件中的帐户信息。

这就像使用JSON文件作为数据库的低保真方式,并且它在全屏模式下工作正常。除非您处于飞行模式。这是一个问题,因为这个原型需要在没有互联网连接的情况下工作。

看来我的方法是完全错误的,但我现在处于亏损状态。有没有办法使用AJAX将file.html加载到index.html中,并同时传递account=234

+0

一般来说,就缓存而言,file.html和file.html?param = val是不同的页面。 – jasonbar

回答

-1

与所有浏览器一样,Safari不会使用查询字符串缓存URL。这个事实一直用来强制AJAX调用通过添加查询字符串来刷新。

在最简单的级别,尝试切换为使用URL的组成部分,而不是像/account-234/。或者如你所说,你的方法可能根本没有意义。你看过使用HTML5 local storage?您可以将所有相关信息提取到适合您的数据结构中,并将其存储为脱机使用。

+1

我不确定这是否正确。旧浏览器没有,但据我所知,所有现代浏览器都这样做。除非您为每个用户创建一个动态清单,否则您的解决方案不适用于清单。 – Gerben

+0

@Gerben我认为你错了。使用URL的组成部分或使用查询字符串作为参数没有区别。在进行AJAX调用时,使用查询字符串参数“欺骗”浏览器始终返回服务器是一种常见技术。 –

+0

但您仍然需要将URL添加到清单中,使用查询字符串或路径编码帐号。 – Gerben

1

file.html?account = 234和file.html是2个不同的网址。您可以在散列(#)中添加帐号,而不是作为参数。但我认为,如果您只将帐号存储在Cookie或本地存储中,那将会更好。

+0

即使具有查询字符串的文件已被访问,但在正常情况下,尝试再次将其拉回时仍然会返回服务器,因为它具有查询字符串。 –

+0

@rex http://stackoverflow.com/questions/850187/caching-from-urls-with-a-query-string – Gerben

0

好吧,我很高兴地报告localStorage是完美的解决方案。我只是将一个键/值存储为“帐户”,“234”。