更新 2016:
Google Chrome がストレージ API をリリースしました: https://developer.chrome.com/docs/extensions/reference/storage/
他の Chrome API と同様に非常に使いやすく、Chrome 内の任意のページ コンテキストから使用できます。
// Save it using the Chrome extension storage API.
chrome.storage.sync.set({'foo': 'hello', 'bar': 'hi'}, function() {
console.log('Settings saved');
});
// Read it using the storage API
chrome.storage.sync.get(['foo', 'bar'], function(items) {
message('Settings retrieved', items);
});
これを使用するには、マニフェストで必ず定義してください。
"permissions": [
"storage"
],
「削除」、「クリア」、「getBytesInUse」のメソッドと、変更されたストレージ「onChanged」をリッスンするイベント リスナーがあります。
ネイティブ localStorage の使用 ( 2011 年からの古い回答)
コンテンツ スクリプトは、拡張ページではなく、Web ページのコンテキストで実行されます。したがって、コンテンツ スクリプトから localStorage にアクセスしている場合は、拡張ページのストレージではなく、その Web ページのストレージになります。
ここで、コンテンツ スクリプトが拡張ストレージ (オプション ページから設定した場所) を読み取れるようにするには、拡張メッセージ パッシングを使用する必要があります。
最初に行うことは、拡張機能にリクエストを送信してデータを取得するようにコンテンツ スクリプトに指示することです。そのデータは、拡張機能の localStorage にすることができます。
contentscript.js
chrome.runtime.sendMessage({method: "getStatus"}, function(response) {
console.log(response.status);
});
background.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method == "getStatus")
sendResponse({status: localStorage['status']});
else
sendResponse({}); // snub them.
});
その周りに API を実行して、一般的な localStorage データをコンテンツ スクリプトに取得したり、場合によっては localStorage 配列全体を取得したりできます。
問題の解決に役立つことを願っています。
ファンシーで一般的であること...
contentscript.js
chrome.runtime.sendMessage({method: "getLocalStorage", key: "status"}, function(response) {
console.log(response.data);
});
background.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method == "getLocalStorage")
sendResponse({data: localStorage[request.key]});
else
sendResponse({}); // snub them.
});