1

私の拡張機能では、特定のドメインの設定をchrome.storage.local次の形式で設定しています。

{
  domainSettings: {
    google.com.au: {
      setting: "someSetting",
      anotherSetting: "somethingElse"
    },
    stackoverflow.com: {
      setting: "someOtherSetting"
      anotherSetting: "somethingElseAswell"
    }
  }
  otherSettings: {
    ...
  }
}

を使用chrome.storage.local.get("domainSettings", function(response){})してすべてのドメインの設定を取得してから、必要なものだけを取得するのではなく、 の設定だけを取得するにはどうすればよいでしょうかgoogle.com.au

必要な情報が 1 つだけである場合、何百倍、何千倍もの情報を取得する必要はないように思われます。

乾杯。

4

2 に答える 2

1

最も単純な変更は、よりフラットなデータ構造を使用することです。

{
  "domainSettings:google.com.au": {
    setting: "someSetting",
    anotherSetting: "somethingElse"
  },
  "domainSettings:stackoverflow.com": {
    setting: "someOtherSetting"
    anotherSetting: "somethingElseAswell"
  },
  ...
}
于 2014-05-29T17:15:16.320 に答える
0

IndexedDBは Chrome 拡張機能に公開されているため、代わりに常に適切なデータベースを使用できます。

または、階層から「domainSettings」を削除して、ホスト名をキーとして使用することもできます。これには厳密には何も問題はありません:

function set(hostname, options, callback){
  var data = {};
  data[hostname] = options;
  // Should be no need for deep copy, as chrome.storage will serialize
  chrome.storage.local.set(data, callback);
}

function get(hostname, callback){
  chrome.storage.local.get(hostname, function(result){
    callback(result[hostname]);
  });
}
于 2014-05-29T11:57:32.173 に答える