2010-01-04 538 views
9

我構建可移植的HTML/Javscript原型,這些原型旨在通過電子郵件/共享點進行壓縮和共享。這裏的關鍵詞是'便攜式' - 不需要服務器來運行這些原型 - 只是一個支持JavaScript的瀏覽器。沒有數據庫。Cookie的替代方案

一些原型需要我堅持數據(只是爲了炫耀潛在的功能)。我目前通過使用cookie來做到這一點。這似乎對Firefox,Chrome等工作正常,但Internet Explorer似乎工作不同。

一旦來自域的所有cookie的最大大小爲4096字節在IE6和7中打開(我還沒有測試過8),cookies就停止工作。一旦這個限制被打中,那麼即使從cookie中讀取似乎停止發生並且原型中斷。

有沒有其他的方法可以保存數據而不必使用服務器和數據庫?

任何想法將不勝感激。

回答

6

將數據存儲在隱藏字段中(如果需要,甚至可以存儲多個數據)。

將用於從cookiees中讀取的代碼封裝到單獨文件中的類/函數中,然後您可以輕鬆地將這些文件交換出來用於實況/樣本實例 - 就像註釋掉一行一樣容易,並取消其他評論。

編輯DUE TO請求COMMENT: 這將跨越多個頁面的工作,只要你在多個頁面推入隱藏字段中的數據。如果您不希望從一頁到另一頁執行POSTS,則可以將頁面包裝到一個框架中,然後將隱藏字段放在未顯示的框架元素中(在這種情況下,領域在技術上不需要被隱藏)。

這是什麼,被訪問的頁面有一個FRAME標記,指向兩個不同的頁面。第一頁是你的應用程序本身,並佔用所有可見的房地產。第二頁只是一個頁面,它將保存一個或多個將保留數據的控件,而第二個頁面根本不可見(給用戶)。由於這些頁面都是同一個「域」的一部分,因此框架子代與其兄弟之一進行對話並將數據讀取/寫入隱藏頁面的域是一件容易的事情。

而且這種方式得到解決cookie的限制是文本輸入域在技術上只受到計算機內存和網絡吞吐量超時的限制,例如,我已經看到一個隱藏的域,其中有20MB的數據在其中(例如,邪惡ViewStates)。

+0

嗨斯蒂芬。謝謝回覆。我正在努力想方設法解決這個問題。你能稍微擴展一下嗎?這是否可以在多個頁面上工作,以及如何解決Cookie限制問題? – Sniffer 2010-01-04 16:33:48

+0

我喜歡它!感謝澄清。我通常不使用框架,但在這種情況下它是有意義的(直到HTML 5獲得更多的觀衆)。畢竟這只是用於原型設計。再次感謝。 – Sniffer 2010-01-04 18:31:21

5

雖然目前還沒有廣泛使用,但有HTML5 webstorage/localstorage。

+0

不幸的是,該解決方案需要適用於所有主流瀏覽器。我無法強制客戶使用特定的或升級到最新的瀏覽器。 – Sniffer 2010-01-04 16:10:16

+0

@Sniffer:我明白你的立場。乾杯。 – jldupont 2010-01-04 16:24:01

5

退房YUI Storage

+0

有趣。我會研究這個,雖然我通常使用jQuery庫,所以更願意使用這個jQuery版本(如果有的話)。 – Sniffer 2010-01-04 16:29:16

+0

看起來像有一些jQuery選項。不知道他們有多成熟。 http://stackoverflow.com/questions/791412/offline-data-storage-access-using-jquery – Chris 2010-01-04 16:45:32

3

Dojo Storage可以讓你節省高達100K

+0

有趣。我會研究這個,雖然我通常使用jQuery庫,所以更願意使用這個jQuery版本(如果有的話)。 – Sniffer 2010-01-04 16:28:39

+0

如果沒有jQuery版本,您應該只能使用Dojo子集來獲取存儲功能。你應該能夠繼續在你的大部分編程中使用jQuery。 注意事項:我從來沒有親自在同一個應用程序中混合使用jQuery和Dojo。 – 2010-01-04 16:49:27

0

有關HTML5存儲API的情況已經有所改善,因爲這是由jldupont here提出的,並且最初得到了回​​答。

目前Opera Mini是唯一不支持它的主流瀏覽器。

Source,訪問22/8/2013。