在 chrome 扩展中保存对象

Saving objects in chrome extension

我一直在研究这个扩展,但遇到了一个问题。我尝试使用同步和本地存储来保存数据,但总是在我关闭对象时消失。那么有没有办法解决我的问题,或者有其他方法可以在 chrome 上保存对象,或者我被前端 Web 开发困住了。

如果需要,这里有代码

objekat={
    Opis:opis.value,
    Broj:select.value,
    Tip:tip
}

chrome.storage.sync.set({objekat},function() {
          console.log('Value is set to ' , objekat);
});


chrome.storage.sync.get(objekat,function(result) {
      console.log('Value currently is ', result.Broj);
    });

当写 {objekat} 时,它意味着 {objekat: objekat} 所以你在包含整个对象的存储中创建一个键 'objekat',但是你使用 [= 一次读取三个键14=] 语法所以当然没有,因为你没有写那些单独的键。

解决方案:

chrome.storage.sync.get('objekat', result => {
  console.log('Value currently is ', result.objekat.Broj);
});
  • API 是异步的,因此您的 get 可能很容易 运行 在 set 完成之前。为防止这种情况,请将整个 get 块放在 set.

    的回调中
  • 您可以将所有密钥作为单独的条目保存在存储中,并一次或单独读取它们:

    chrome.storage.sync.set(objekat, () => {
      chrome.storage.sync.get('Broj', result => {
        console.log('Broj:', result.Broj);
      });
      chrome.storage.sync.get(objekat, result => {
        console.log('All values', result);
      });
    });
    

有一种不同的方法可以将数据保存到 localStorage 中,但我没有注意到它

//                    Key   save whole object
localStorage.setItem("key", JSON.stringify(objekat))

并通过函数从 localStorage 中获取数据

function getdata(){
    var val = localStorage.getItem(objekat.ID);
    return val;
}