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){})获取每个域的设置,然后只获取我需要的设置,我怎样才能获取 justgoogle.com.au的设置。

当我只需要一个时,似乎没有必要获得数百或数千倍的信息。

干杯。

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 回答