为什么在加载新页面时会重置Chrome.storage.sync存储空间?

时间:2017-01-22 23:01:09

标签: javascript google-chrome-extension storage

var userCharacters = [];

window.onkeyup = function(e){

userCharacters.push(e.key);

chrome.storage.sync.set({'userInput':userCharacters})

if(e.key == "Shift")
  chrome.storage.sync.get('userInput',function(userText){
    alert(userText.userInput);
  });

}

我尝试存储和检索标记为' userInput'的数据,但每次打开新页面或标签时,都会重置userText.userInput值。有人可以解释为什么会发生这种情况以及我们如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

每次加载新页面时,userCharacters[]数组都定义为[],然后添加了字符。运行chrome.storage.sync.set({'userInput':userCharacters})时,现有数据将被覆盖 要解决此问题,请在用户添加更多内容之前将已存储的数据加载到userCharacters

var userCharacters;
chrome.storage.sync.get('userInput',function(userText){
  userCharacters = userText.userInput;
});
window.onkeyup = function(e){
  userCharacters.push(e.key);
  chrome.storage.sync.set({'userInput':userCharacters})
  if(e.key == "Shift")
    chrome.storage.sync.get('userInput',function(userText){
      alert(userText.userInput);
    });
}