2011-08-03 67 views
2

随着jQuery手机我正在使用一个动态的'页面'模板与自定义内容插入取决于用户输入。停止从缓存动态页面jQuery手机页面

这一切都有效,但一旦页面一旦被缓存就创建,并且如果您返回并做出新选择,将不会显示新值。我试着应用以下修补程序:

$('#instrument').bind('pagehide', function(){ 
    $(this).remove(); 
}); 

这确实删除的页面,但如果你试图返回到该页面不会重新初始化,我会不断得到推回我的应用程序的开始。

动态内容必须使用pagebeforecreate(实际的HTML看起来并不重要,因此我不会在这里包含它)添加到页面中,否则它将不会被格式化。如果我使用pagebeforeshow,则内容将不会被格式化,但如果您返回并进行新的选择,它将发生变化。

我意识到pagebeforecreate将缓存的页面,但它不会出现,我可以用任何其他方法,由于内容没有格式:(

我不能为我的生活出一修复

回答

5

尝试使用pagebeforeshow但当所示的页面来修复所有格式调用page()

就像这样:!

$('#instrument').bind('pagebeforeshow', function() { 
    // Do your content insertion 
}); 

$('#instrument').bind('pageshow', function() { 
    $(this).page(); 
}); 

您可能会发现这只有“一半”有效(页面更新时不更新格式),在这种情况下,您可能会尝试this trick:将页面封装在临时元素中,并在包装​​器上调用page()

$('#instrument').bind('pageshow', function() { 
    $(this).wrap('<div id="temporary-instrument-wrapper">'); 
    $('#temporary-instrument-wrapper').page(); 
    $(this).unwrap(); 
}); 
+0

谢谢丹,你的第二个主意真的有效!我不得不删除'pagehide'上的动态内容,以阻止它被添加到现有内容(我需要它被完全替换),并且我还应用了一个'show'和'hide'的东西来阻止一个无风格的flash内容,但动态值现在正在刷新。非常感谢! –

1

新的DOM缓存管理功能:在默认情况下

由于动画页面过渡要求网页你在 和一个你'正在转换到DOM中,我们将页面 添加到DOM当您导航arou ND。到目前为止,这些页面将继续保留在DOM中,直到您完成整页刷新,因此 一直是我们关注的问题,我们可能会在某些 设备上遇到内存限制并导致浏览器速度变慢甚至崩溃。

对于Beta 2,我们添加了一个简单的机制来保持DOM整洁。它 的工作原理是这样的:每当通过Ajax加载页面时,一旦您转到另一页 (技术上,页面隐藏),就会将其标记为 以从DOM中删除。如果您返回到删除的页面,则浏览器可能能够从其缓存中检索文件,或者如果需要, 将从服务器重新请求该文件。在嵌套列表的情况下,我们 一旦您导航到 页面不属于列表的一部分,则删除组成嵌套列表的所有页面。包含在 多页设置中的页面完全不受此功能的影响 - 只有由Ajax引入的页面 才由jQuery Mobile以这种方式进行管理。

称为domCache一个新的页面选项控制是否要离开页面 在DOM中,以此来缓存它们或 保持DOM清洁,清除隐藏的页面(新路)(曾经工作过的事物)。默认情况下, domCache设置为false以保持DOM大小的主动管理。如果您将 设置为true,则需要注意自己管理DOM,并在一系列设备上对其进行彻底测试。

要设置以 个人页面domCache选项选择缓存页面,您可以将数据-DOM缓存=“真” 属性添加到页面容器或编程方式设置这样的:

elem.page({ domCache: true }); 

domCache选项也可以全局设置。这是如何把 DOM缓存回到所以它的工作原理就像它最初:

$.mobile.page.prototype.options.domCache = true; 
+0

感谢Phill,我刚刚阅读博客文章并更新了我的jQuery Mobile版本,但它对我的应用程序没有任何影响。这一定是我编写它的方式 - 我想我需要深入一点。谢谢anyhoo! –

+0

'data-dom-cache =“false”'在我的'div'帮助! – Andrew

0

我已经修复了问题,这个简单的解决方案:

添加另一个参数与随机号码给您的网址像http://www.yourdomain.com/ws.php?opcion=1&**cache_hack=" +Math.random();**

与随机让最后一个参数“diferente”呼叫和jQuery Mobile的不cache.-

也加入你的PHP脚本:

`header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Cache-Control: no-cache"); 
header("Pragma: no-cache");` 
+0

它确实有效,但我不认为SEO喜欢它(如果你正在做一个互联网页面)。 –

+0

jajajajaj不,这是真的;) – Vousys