Chrome拡張機能のコンテキストでブラウザの再起動後にアクセスできるようにデータを保存することは可能ですか?
6 に答える
それよりもさらに簡単です:
読むには:
var myStoredValue = localStorage["TheKeyToMyStoredValue"];
書くには:
localStorage["TheKeyToMyStoredValue"] = myNewValueToStore;
取り除くには:
delete localStorage["TheKeyToMyStoredValue"];
はい、そうです。これを行う方法の完全なウォークスルーを行うと、合理的な StackOverflow の回答の長さを超える可能性があるため、Rajdeep Dua によるこの非常に広範なチュートリアルを参照します。
関連するコードは次のようになります。
// Store item in local storage:
function setItem(key, value) {
try {
log("Storing [" + key + ":" + value + "]");
window.localStorage.removeItem(key); // <-- Local storage!
window.localStorage.setItem(key, value); // <-- Local storage!
} catch(e) {
log("Error inside setItem");
log(e);
}
log("Return from setItem" + key + ":" + value);
}
// Gets item from local storage with specified key.
function getItem(key) {
var value;
log('Retrieving key [' + key + ']');
try {
value = window.localStorage.getItem(key); // <-- Local storage!
}catch(e) {
log("Error inside getItem() for key:" + key);
log(e);
value = "null";
}
log("Returning value: " + value);
return value;
}
// Clears all key/value pairs in local storage.
function clearStrg() {
log('about to clear local storage');
window.localStorage.clear(); // <-- Local storage!
log('cleared');
}
function log(txt) {
if(logging) {
console.log(txt);
}
}
Chrome は、HTML5 Web データベース仕様もサポートしています。これにより、ローカル SQL データベースが提供されるため、単純に名前と値のペアをローカル ストレージに格納するよりも複雑なことを行うことができます。
現在の chrome バージョンにはローカル ストレージがあります。
私はそれを自分で使用しました。modernizr を使用して、ブラウザがそれをサポートしているかどうかを検出できます。ローカル ストレージが存在しない場合に Cookie にフォールバックするクライアント向けのソリューションを作成しましたが、これは拡張機能では問題になりません。
最近ではchrome.storageを使用する方が良いかもしれません。 chrome.storage は非同期であるため高速で、localStorage は 5MB に制限されています。
ここにはすでにいくつかの優れた回答がありますが、拡張機能でコンテンツ スクリプトを使用することにした場合、そのコンテンツ スクリプトは localStorage にアクセスできないことに注意してください。したがって、chrome.storageは良い代替手段です。