web-dev-qa-db-ja.com

Chrome拡張機能はローカルストレージにアクセスできますか?

chrome拡張機能)のコンテキストでブラウザの再起動後にアクセスできる方法でデータを保存することは可能ですか?

27
Luke

それよりもさらに簡単です:

読むには:

    var myStoredValue = localStorage["TheKeyToMyStoredValue"];

書くには:

    localStorage["TheKeyToMyStoredValue"] = myNewValueToStore;

取り除くには:

    delete localStorage["TheKeyToMyStoredValue"];
44
Martin Bartlett

はい、そうです。これを行う方法の完全なウォークスルーを通過すると、おそらく妥当なStackOverflowの回答の長さを超えるため、この非常に広範なチュートリアルRajdeepDuaによる。

関連するコードは次のようになります。

// 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);
  }
}
21
John Feminella

ChromeはHTML5 Webデータベース 仕様もサポートしています。これにより、ローカルSQLデータベースが提供されるため、名前と値のペアをローカルストレージに保存するよりも複雑な処理を実行できます。

7
Ken Liu

現在のchromeバージョンにはローカルストレージがあります。

自分で使ったことがあります。 modernizrを使用して、ブラウザーがそれをサポートしているかどうかを検出できます。ローカルストレージが存在しない場合にCookieにフォールバックするクライアント向けのソリューションを作成しましたが、これは拡張機能にとって問題にはならないはずです。

5

最近では、 chrome.storage chrome.storageは非同期であるため、高速になり、localStorageは5MBに制限されています。

3
krbnr

ここにはすでにいくつかの優れた回答がありますが、拡張機能でコンテンツスクリプトを使用することにした場合、そのコンテンツスクリプトはlocalStorageにアクセスできないことに注意してください。したがって、 chrome.storage が適切な代替手段です。

1
Noam Hacker