18

拡張機能にchromeのローカルストレージ/同期ストレージ(chrome.storage)を使用して、さまざまなエントリのデータエントリを保存しようとしています。正しい構文がわからないようです。単に情報を文字列として保存したいだけです。検索しましたが、まだ機能するものが見つかりません。

これは、通常のlocalStorage手法を使用して現時点で機能するものです。

    var imageName = "Red Cat 5";
    var myDescription = "A nice kitty";

    localStorage.setItem (imageName, myDescription);
    console.log(localStorage[imageName]);

これは機能し、既存の変数からキーを設定できます。chrome.storage.local.setを使用してそれを行うにはどうすればよいですか?私はこれを試しましたが成功しませんでした:

    var imageName = "Red Cat 5";
    var myDescription = "A nice kitty";

    chrome.storage.local.set({imageName: myDescription}, function()
    {console.log('success?');});

    chrome.storage.local.set({imageName: myDescription}, function()
    {chrome.storage.local.get(imageName, function(r){console.log(r.imageName);});});

どんな助けでも大歓迎です。ありがとう!

-----以下の更新-----

コードで説明してくれてありがとう。私はそれが他の誰かに役立つことを願っています。これを行うために利用できる情報はほとんどないようです!あなたの答えは私がこれを思い付くのを助けました:

    var nameOne = "al";
    var nameTwo = "bob";
    var nameThree = "carl";
    var nameFour = "dan";

    var dataObj = {};

    dataObj[nameOne] = nameTwo;
    dataObj[nameThree] = nameFour;

    storage.set(dataObj);

    storage.get(dataObj, function(result)
    {
    console.log(result[nameOne]);
    console.log(result[nameThree]);
    });
4

2 に答える 2

32

匿名オブジェクトではなく名前付きオブジェクトを使用し、角かっこを使用してメンバー変数を設定します。

var dataObj = {};
dataObj[imageName] = myDescription;
chrome.storage.local.set(dataObj, function() { /*...*/ });

これは最もエレガントなコードではありませんが、それを行う唯一の方法です。

ES6では、少し短いアプローチは、動的プロパティ名を持つオブジェクトリテラルを使用することです。

chrome.storage.local.set({
    [imageName]: myDescription
}, function() { /*...*/ });
于 2012-10-17T02:21:24.883 に答える
1

このsetメソッドはオブジェクトアイテムgetを受け入れ、オプションのコールバックはオプションの文字列、配列、またはオブジェクトキーを受け入れます。最初の引数を渡した場合は、2番目の引数も渡す必要があります。

例:

// To set 
chrome.storage.local.set({'testKey':'Test Value'});

// To get
chrome.storage.local.get('testKey', function(data){
  console.log(data); 
  // logs out "Object {testKey: "Test Value"}"
})
于 2017-12-14T13:13:39.423 に答える