
対象読者
- Chrome拡張機能について知りたい方
- ストレージを使ったブラウザアクションやバックグランドページなどの共通データを使う方法を知りたい方
ブラウザアクションとバックグランドページでのデータの送受信については他の記事にもまとめてますのでそちらも参照ください。

storageを使うと、メモリ上にデータを保存できます。
通常のstorageはバックグラウンドページとコンテンツスクリプト間でのやり取りはできません。
ただし、chrome.storage APIを使用すると保存したデータを相互にやり取りすることができるようになります。
また、storageを使うことで以下のようなメリットもあります。
- オブジェクトも渡せる
- 早い(メモリの値を展開するため、バックグランドなどとやり取りする必要がないため)
裏での処理がメインなので表上はアラートを表示するだけです。
バックグランドページ側で、storage登録。
ブラウザアクション側で、登録したstorageを読み込んでアラート表示しているだけになります。




マニフェストファイル
{
"manifest_version":2,
"name":"Chrome ex page action",
"version":"1",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_popup": "popup.html",
"default_title": "Helloを表示"
},
"permissions": [
"storage"
]
}
storageを使うようにするために、permissionsを追加する必要があります。
HTML
<!DOCTYPE html>
<meta charset="UTF-8" />
<html>
<head>
<title></title>
<script type="text/javascript" src="myscript.js"></script>
</head>
<body>
<p id="hello">Hello!</p>
</body>
</html>
ブラウザアクションでpopup.htmlを読み込み。
html内でmyscript.jsファイルを読み込んでます。

JavaScriptファイル
chrome.storage.local.set({hoge : "hoge-------!!!!"});
chrome.storage.local.set({piyo : "piyo--------!!!!!"});
chrome.storage.local.set
名前と値をセットしています。
hogeと名前で、「hoge——-!!!!」という値をセット。
piyoと名前で、「piyo——-!!!!」という値をセット。
chrome.storage.local.get("hoge", function(items) {
console.log(items.hoge);
alert(items.hoge)
});
chrome.storage.local.get(null, function(items) {
console.log(items.piyo);
alert(items.piyo)
});
chrome.storage.local.get
このメソッドを使うことで、storegeに登録した値を取得することができます。
第1引数をnullにすると、すべてのstoregeに登録した内容が取得できます。
今回のメソッドでは、
hogeは、第1引数を指定。piyoは、第2引数を指定せずに取得しています。

チャンネルやsendMessageなどを使ったメッセージパッシングを使うより
storageを使った方が共通データのやり取りは楽です。
頻繁にデータを参照したい場合は、storage。
バリデーションチェックなど頻繁に通信しない場合は、メッセージパッシングを使うなどの使い分けを意識することが大事なポイントになります。
ソースコードはこちら
https://github.com/satoNobu/chrome_ex/tree/storage
他の拡張機能についてはこちらにまとめていますのでご参照ください。
