【问题标题】:Making an Array in chrome.storage and retrieving data [duplicate]在 chrome.storage 中创建一个数组并检索数据 [重复]
【发布时间】:2015-09-16 08:04:33
【问题描述】:

所以我现在有点进退两难。我似乎无法在 chrome.storage 中添加一个数组,然后再检索它。这是我现在拥有的代码:

function() {
    chrome.storage.sync.get({ObjectName: []}, function (result) {
    var ObjectName = result.ObjectName;
    ObjectName.push({ArrayName: document.getElementById("field")});
    });

现在检索并显示它:

chrome.storage.sync.get({ArrayName: function(value) {
            for(i=0; i<value.length; i++) { 
                document.write(value)
            };

我得到的错误可能就像语法问题一样简单,相当于:

错误:表单 get(object) 的调用与定义 get(可选字符串或数组或对象键,函数回调)不匹配

【问题讨论】:

  • 在字符串中存储和加载JSON,不能直接使用对象
  • 实际上,您可以使用 Storage API 直接存储对象/数组。见:stackoverflow.com/questions/16605706/…
  • 我没有看到链接解决方案与我的解决方案之间有任何差异,但我仍然遇到相同的错误。
  • 您的第二次获取的语法不正确。你有get(object),其中object{ArrayName:function()}。你需要get(object,callback)

标签: javascript arrays google-chrome-extension


【解决方案1】:

您必须使用 set 方法将值设置为 chrome.storage

这是一个如何做的例子

使用 set 将数组存储到 chrome 存储中

var testArray=["test", "teste", "testes"];

chrome.storage.sync.set({
    list:testArray
}, function() {
    console.log("added to list");
});

使用 get 获取 arrayValue 并通过调用 updatemethod 进行修改

chrome.storage.sync.get({
    list:[]; //put defaultvalues if any
},
function(data) {
   console.log(data.list);
   update(data.list); //storing the storage value in a variable and passing to update function
}
);  

function update(array)
   {
    array.push("testAdd");
    //then call the set to update with modified value
    chrome.storage.sync.set({
        list:array
    }, function() {
        console.log("added to list with new values");
    });
    }

【讨论】:

  • 你能告诉我如何更新所说的数组吗?
  • @Hamza You get 数组,修改它然后 set 将它返回,所有这些都在一个回调链中。
  • @HamzaIbad 我已经添加了更新代码并检查它
  • 这是not going to work,除非它全部在一个回调链中。
  • @Xan 感谢您的信息。相应地修改了代码
猜你喜欢
  • 2022-11-22
  • 2021-12-03
  • 2019-12-22
  • 2020-10-26
  • 2015-04-22
  • 1970-01-01
  • 2019-05-17
  • 2011-06-15
  • 2021-02-15
相关资源
最近更新 更多