2011-09-15 105 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」。