2012-04-17 52 views
0

我正在寫的Chrome打包應用程序。使用後臺頁面(而不是應用程序的主HTML頁面)讀取/寫入localStorage值有什麼優勢?訪問/寫入Chrome應用localStorage的

當前用戶似乎以我無法複製的方式丟失數據。現在,應用程序在主HTML頁面的JavaScript中讀寫localStorage。更改應用程序以使用背景頁面的JavaScript修復此問題?

+1

難道你的用戶偶然被擊中的localStorage的大小限制相關領域?至於你的問題,只要你保持安全並且沒有用完存儲空間就沒有關係。一個缺點是,如果你使用localStorage的背景頁面,你將不能夠沒有擴展名來訪問其數據。 – 2012-04-17 16:17:20

+0

@AlexanderPavlov該應用使用Chrome的unlimitedStorage權限(http://code.google.com/chrome/extensions/manifest.html#permissions),但現在我已仔細查看該頁面,似乎它甚至可能不適用於localStorage ...也許我應該使用indexedDB。廢話。 – wavetree 2012-04-17 17:28:21

+0

事實上,unlimitedStorage不適用於本地存儲,並且[錯誤已被標記WontFix(http://code.google.com/p/chromium/issues/detail?id=58985)。你應該使用[索引資料(https://developer.mozilla.org/en/IndexedDB)和/或[文件系統存儲(http://www.html5rocks.com/en/tutorials/file/filesystem/),這取決於關於您正在存儲的數據類型。編寫我自己的應用程序時,我做出了完全相同的不幸發現。 – apsillers 2012-04-17 22:02:29

回答

0

無論設置的權限如何,LocalStorage都被限制爲5兆字節。

當用戶在chrome:// settings/clearBrowserData上檢查「刪除cookies和其他網站和插件數據」時,我相信特定站點和擴展localstorage文件都被刪除。也許這就是你的用戶「丟失」數據的方式。

使用背景頁讀/寫localStorage的防止其他擴展您的數據,它可以發生於網站域名localStorage的文件,因爲只有你的背景頁面可以訪問該文件的腐敗。
雖然其他擴展確實可以叫你的背景網頁,他們仍然要使用你的保存/加載函數來訪問你的擴展localStorage的文件。

0

問題可能與localStorage容器的上下文有關。當從後臺腳本運行時,您將保存您的擴展的localStorage。從內容腳本運行時,您將保存到localStorage用於該特定網站。由google.com上的內容腳本編寫的localStorage.setItem('xx','yyy')不能被yahoo.com上的內容腳本的localStore.getItem('xx')調用讀取