2011-04-07 25 views
2

我有一個HTML5的網絡應用程序,其中我使用localStorage來保留用戶之間的一些客戶端用戶設置。我認爲這樣做一切正常,但我最近發現,在WebOS瀏覽器中,localStorage項目在瀏覽器完全關閉後(所有卡片 - 不僅僅是我的頁面)被清除。它的行爲就像它被保存到會話存儲中,但事實並非如此。這是說明我的問題小例子:WebOS在瀏覽器關閉時重置LocalStorage?

<!DOCTYPE html> 
<html> 
    <head> 
     <title>test</title> 
     <meta charset="utf-8" /> 
     <meta name="apple-mobile-web-app-capable" content="yes"> 
     <script type="text/javascript" src="js/jquery.min.js"></script> 
     <script> 
      $(function() { 
       $('#btnV').click(function() { 
        var x = ''; 
        for(var i = 0; i < localStorage.length; i++) { 
         x += localStorage.key(i) + ':' + localStorage.getItem(localStorage.key(i)) + '<br/>'; 
        } 
        $('#lbl').empty().append(x); 
       }); 
       $('#btnS').click(function() { 
        localStorage.setItem('test', 'blah'); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <span id="lbl"></span> 
     <input type="button" id="btnS" value="Save" /> 
     <input type="button" id="btnV" value="View" /> 
    </body> 
</html> 

當我第一次加載頁面,點擊「查看」按鈕,沒有任何顯示。如果我點擊「保存」,然後「查看」,我會看到保存的項目。刷新頁面並立即單擊查看將顯示頁面重新加載時保留的值。但是,如果我完全關閉瀏覽器並返回頁面,則「查看」將不會像第一次顯示的那樣顯示任何值。我是否錯誤地設置了localStorage項目,或者是否配置了WebOS瀏覽器來執行此操作?我無法在設置中找到任何相關的內容。

謝謝...

+0

希望我能幫忙,但你的代碼看起來不錯,所以我猜這是一個WebOS問題(我沒有掌上設備) – 2011-04-07 03:31:16

+0

這是否發生在模擬器中?在設備上?什麼版本的操作系統?我在仿真器中有幾個不同的設備和操作系統版本,所以稍後我會試着看看它,看看它在哪裏複製。 – 2011-04-07 19:07:31

+0

@GordonWorley @Gordon Worley:是的,它發生在模擬器(1.4.5 SDK)和設備(Palm Pre Plus,也是1.4.5)上。這就是我所要測試的 – glancep 2011-04-13 18:22:07

回答

0

所以,據我所知,localStorage的不WebOS的1.4所支持我想我記得看到它被列爲WebOS 2.0(或者2.1)中啓用的功能,但我找不到關於這個主題的任何文檔,所以我可能會誤解。

假設您正在存儲少量數據,用戶設置通常更適合存儲在WebOS中的Cookie中,使用Mojo.Model.Cookie

在我自己的應用程序中,我使用Cookie作爲用戶首選項,並將應用程序數據存儲在HTML5數據庫數據庫中,使用我的open-source database class使得HTML5數據庫訪問不那麼繁重。

+0

謝謝。顯然這是這種情況......我只覺得1.4.x支持它很奇怪,它只是沒有堅持下去。 Cookie可能是我將要去的方式 - 感謝您的建議! – glancep 2011-04-20 12:06:56