将Javascript对象保存到Chrome.Storage

时间:2016-02-23 04:37:56

标签: javascript jquery google-chrome google-chrome-extension google-chrome-devtools

Google Chrome扩展程序的此代码不起作用。我是Javascript的新手,我不确定问题是什么。任何帮助将不胜感激。

JS / jQuery的

var userV = serviceName + 'Username'; 
var passV = serviceName + 'Password'; 

boolean works = true; 

var User = {
  passV: password, 
  userV: username, 
  works = true; 
}

chrome.storage.sync.set({User : userV}, function() {
  console.log('');
});
chrome.storage.sync.set({User : passV }, function() {
  console.log('');
});

脚本

chrome.storage.sync.get("userV", function (User) {  
    sUsername = User.userV; 
};

chrome.storage.sync.get("passV", function (User) {  
    sPassword = User.passV; 
};

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在您的代码中,您将用户和密码存储在相同的密钥名称中,因此您将只获得最后分配的值,

以及按值而非按键检索值

JS / jQuery

var userV = serviceName + 'Username'; 
    var passV = serviceName + 'Password'; 

    boolean works = true; 

    var User = {
      passV: password, 
      userV: username, 
      works = true; 
    }

    chrome.storage.sync.set({User : userV}, function() {
      console.log('');
    });
    chrome.storage.sync.set({Pass : passV }, function() {
      console.log('');
    });

脚本

chrome.storage.sync.get("User", function (data) {  
    sUsername = data.User; 
};

chrome.storage.sync.get("Pass", function (data) {  
    sPassword = data.Pass; 
};

答案 1 :(得分:0)

为了更加简化,您可以将整个User对象存储到存储中。如果要存储用户数据,代码如下:

var userV = serviceName + 'Username'; 
var passV = serviceName + 'Password'; 

boolean worksV = true; 

var user = {
  password: passV, 
  username: userV, 
  works: worksV 
};

chrome.storage.sync.set({"user" : user}, function() {
  // Do something...
});

然后,当您想要检索存储的数据时,代码为:

chrome.storage.sync.get("user", function(data) {
  var user = data.user;
  var passV = user.password;
  var userV = user.username;
  var worksV = user.works;
  // Do something...
});

我认为您不需要将每个数据项存储为每个属性。我建议将它存储为一个对象。