2011-08-03 94 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