javascript - 为什么加载新页面时 Chrome.storage.sync 存储会重置?

标签 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 值。有人可以解释为什么会发生这种情况以及我们如何解决这个问题吗?

最佳答案

每次加载新页面时,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);
    });
}

关于javascript - 为什么加载新页面时 Chrome.storage.sync 存储会重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41797124/

相关文章:

javascript - 创建具有设定时区的日期而不使用字符串表示

javascript - 存储Jquery对象并稍后访问?

ubuntu - 自动完成高级解释

windows - SQLLOCALDB 问题

android - 我的 Android 应用程序是否可以读取内部存储中除其私有(private)数据文件夹以外的文件夹?

javascript - 在 Laravel 中的 jQuery 中提交表单后加载 GIF

javascript - Electron 没有从 window.open() 返回正确的值

javascript - 如何使用 Chrome 存储从对象中删除数据?

javascript - ESLint: 'chrome' 未定义 (no-undef)

javascript - Chrome 扩展 : sendMessage from content to background getting response from popup