Chrome Extension開発を勉強してみる (15) - chrome.storageを使う -
※Chromeのみ対応でChromiumは非対応な模様 (Daily Build版のやつは未検証)
タイトル通り、chrome.storage APIを使ってみた
manifest.json
{
"name": "test",
"version": "0.1",
"manifest_version": 2,
"browser_action": {
"default_icon": "icon.png",
"default_title": "test"
},
"background": {
"scripts": ["background.js"]
},
"permissions": ["storage"]
}
5MB? 以上のデータを保管する場合にはunlimitedStorageなパーミッションが必要な模様。通常な場合はstorageのパーミッションだけでいい模様
background.js
単純にブラウザアクションを作り、それをクリックするたびに+1をしてchrome.storageにぶち込むというのをやる
(function(undefined) {
chrome.storage.onChanged.addListener(function(changes, namespace) {
console.log(changes);
console.log(namespace);
});
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.storage.local.get(["value"], function(item) {
var n = 0;
if ("value" in item) {
n = parseInt(item.value);
}
chrome.storage.local.set({ "value": (n + 1) });
console.log(n);
});
});
})();
ローカルな所であればchrome.storage.localなAPIを使う事で可能で、chrome.storage.onChanged.addListenerを変更をキャッチできる。namespaceな引数はchrome.storage.localかchrome.storage.syncかをどちらかが入るが、値はlocal、もしくはsyncが格納される模様
公式ドキュメント: http://developer.chrome.com/trunk/extensions/storage.html