55

拡張機能で使用しようとしています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]ます。何故ですか?私は何を間違っていますか?ドキュメント/例を見ましたが、問題を特定できないようです。

4

3 に答える 3

67

このコードは私のために働きます:

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()は、キーと値のマッピングにアイテムを含むオブジェクトを返すため、検索パターンでキーのインデックスを使用する必要があります。

インプ:

Chrome.storage.local.get()非同期であることを特定してくれた Rob に感謝します。 callback() が成功した後に動作するようにコードを変更する必要があります。

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

于 2012-12-14T05:35:46.573 に答える
6

デバッグまたは使用

alert(JSON.stringify(result));

返される内容の詳細については

于 2012-12-14T05:28:44.710 に答える