2012-05-28 132 views
7

我正在研究Chrome擴展程序,該擴展程序需要保存一些信息(主要是標籤信息),這些信息將在擴展程序的整個生命週期中存在(例如,因爲用戶在關閉瀏覽器之前開始使用它)。Chrome擴展程序保存數據

一個選擇是使用localstorage,但localstorage只能保存字符串,這使我非常不舒服(因爲我有一堆數據來保存 - 日期,URL,整數等)。我在尋找的是使用我自己的JavaScript對象,這些對象將在整個擴展期間生活。
現在的問題是,在JavaScript文件的腳本中定義這些對象會在用戶每次單擊瀏覽器動作時清除它們。換句話說,我有一個名爲popup.html的瀏覽器動作,其中包含一個JavaScript文件(我想在其中保存我的對象),並且每次用戶單擊瀏覽器動作時,我在JS文件中定義的所有對象都將丟失,但我希望一切都能堅持下去。

我有什麼選擇讓瀏覽器操作中的許多點擊持續存在的數據,這不是本地存儲?

+1

那麼,你想記住當前會話的數據(直到瀏覽器關閉)?在這種情況下,只需在[後臺頁面](https://code.google.com/chrome/extensions/background_pages.html)中創建對象即可。 –

+0

或者你可以使用[indexedDB](https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB) – gengkev

+0

這幾天你可以使用chrome.storage它自動序列化/反序列化FWIW:http://stackoverflow.com/ a/24281357/32453 – rogerdpack

回答

2

你真的應該使用localStorage(你可以使用JSON.stringify和JSON.parse)。

如果你真的不想使用localStorage的也不是一個服務器端存儲,使用索引資料:https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB

+0

如果沒有其他選項,我將回退到localStorage。你知道如果一個背景頁面可以用來解決我的問題?我不能完全理解他們在手冊中做了什麼...... –

+0

您可以使用背景頁面,但可能不需要。您的擴展的任何腳本都可以讀寫localStorage。 –

2

嘗試使用Filesystem API的持久性存儲。這比localStorage更可靠。一旦用戶清除緩存,cookies等,localStorage將被清除。文件系統更可靠。

+2

即使用戶明確刪除了cookies等,爲什麼要堅持數據是一個好主意?你作爲一個用戶想要這樣的行爲嗎?這是特別奇怪的,因爲@Joel_Blum要求只在用戶會話期間持續存在。 – steinar

+0

不幸的是,似乎FileSystem API沒有被Chrome瀏覽器採用,並且基本上被LocalStorage「替換」 – rogerdpack