web-dev-qa-db-ja.com

chrome.storage.local.getおよびset

拡張機能で_chrome.storage.local_を使用しようとしていますが、機能していないようです。 localStorageを使用しましたが、複数ページのコンテンツスクリプトで使用できないことに気付きました。

だから、これは私が思いついたものです:

_function save()
{
    var channels = $("#channels").val();
    var keywords = $("#keywords").val();

    chrome.storage.local.set({'channels': channels});
    chrome.storage.local.set({'keywords': keywords});
}
_

私はsave()を正しくやっていると思いますが、問題はload()で起こります:

_function load()
{
    var channels = "";
    chrome.storage.local.get('channels', function(result){
        channels = result;
        alert(result);
    });

    var keywords = "";
    chrome.storage.local.get('keywords', function(result){
        keywords = result;
        alert(result);
    });

    $("#channels").val(channels);
    $("#keywords").val(keywords);
}
_

アラートがトリガーされると、_[object Object]_が出力されます。何故ですか?何が間違っていますか?ドキュメント/例を見てみましたが、問題を特定することはできません。

46
user569322

このコードは私のために機能します:

function load() {
    var channels = "";
    var keywords = "";
    chrome.storage.local.get('channels', function (result) {
        channels = result.channels;
        alert(result.channels);
        $("#channels").val(channels);
    });
} 

Chrome.storage.local.get() は、キーと値のマッピングにアイテムを含むオブジェクトを返すため、検索パターンでキーのインデックスを使用する必要があります。

IMP:

識別してくれたRobに感謝します: Chrome.storage.local.get() is asynchronous 、 callback()が成功した後にコードが機能するようにコードを変更する必要があります。

さらに情報が必要な場合はお知らせください。

62
Sudarshan

デバッグまたは使用

alert(JSON.stringify(result));

返品の詳細については

7
7zark7

使用している「結果」値は、ストレージ値を含むオブジェクトであり、使用する必要がある値を取得しますresult.keywords、キーワードの値を取得します。例:

function load(){
  chrome.storage.local.get('keywords', function(result){
    var keywords = result.keywords;
    alert(keywords);
  });

  chrome.storage.local.get('channels', function(result){
    var channels = result.channels;
    alert(channels);
  });
}
1
Mdbook