iOS PhoneGap。防止 iFrame 缓存

Posted

技术标签:

【中文标题】iOS PhoneGap。防止 iFrame 缓存【英文标题】:iOS PhoneGap. Prevent iFrame from caching 【发布时间】:2012-10-08 09:56:57 【问题描述】:

在 iPad 的 PhoneGap 应用程序中,我有一个 iFrame,它显示存储在在线数据库中的数据。在进一步的步骤中,我通过 JSON 下载此数据并在应用程序中对其进行编辑。完成后,我返回 iFrame 但它仍然显示旧数据。使用 JSON,我得到了新的正确数据。

...简而言之,应用缓存了 iFrame 的内容

我尽一切努力阻止缓存,包括页面中常见的元标记内容

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />

并使用时间戳作为获取参数调用页面。我什至尝试通过 javascript 重新渲染整个 iFrame,但它仍然不起作用。

function loadFrame() 
var cid = localStorage.getItem("cid");  
var ts = new Date().getTime();
var url = pageURL+"?c=" +cid + "&timestamp=" + ts;

localStorage.removeItem("cid");

ifid = "iframe_" + ts;  

$("#iframe_wrap").html('<iframe name="iframe" id="'+ifid+'" src="'+url+'" class="fullscreen"></iframe>');
$("#"+ifid).hide();
$("#"+ifid).one("load",onLoad);

console.log("URL in iFrame '#"+ifid+"': "+url);

只有当我重新启动应用程序时,我才能获得新页面

有什么办法可以解决这个问题吗?

【问题讨论】:

你怎么return to the iFrame?也许您应该在包含 iFrame 的页面上附加一个时间戳?还是这是一个单页应用? 它是一个单页应用程序,但我的视图是通过 AJAX 加载到容器中的。不幸的是,您的提示也没有用 【参考方案1】:

我解决了这个问题,但这只是 ios 的部分问题!

我忘了提到的是,iFrame 中的页面还显示来自 AJAX 请求的数据。在 iOS 6 中,即使您说“cache: false”(我们使用 jQuery),AJAX 请求也会被缓存。

因此,要获取最新数据,您必须添加一个随机但每次唯一的值作为参数(我使用时间戳)。我建议我的同事(他制作了那个数据显示页面)添加这个参数,现在它可以工作了。

当我直接在应用程序中加载数据时,我已经做了这个技巧,他没有:)

【讨论】:

以上是关于iOS PhoneGap。防止 iFrame 缓存的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap iFrame 空白 iOS

防止浏览器中的 iframe 缓存

Phonegap / Cordova ios外部链接iframe无法在safari中打开

在 iOS 应用上的子 iFrame 和 PhoneGap 应用之间调用方法并传递参数

防止 iframe 打开新窗口

为啥 iframe 中的链接在 phonegap ios 应用程序中不起作用?