the*_*axx 18 local-storage google-chrome-extension
我正在尝试使用chrome的本地存储/同步存储(chrome.storage)来扩展,以存储数据条目,用于许多不同的条目.我似乎无法弄清楚它的正确语法.我只想简单地将信息存储为字符串.我搜索过,找不到任何有用的东西.
这对我来说使用正常的localStorage技术是有用的:
var imageName = "Red Cat 5";
var myDescription = "A nice kitty";
localStorage.setItem (imageName, myDescription);
console.log(localStorage[imageName]);
Run Code Online (Sandbox Code Playgroud)
这有效,让我从现有变量设置密钥.我怎么能用chrome.storage.local.set来做呢?我一直在尝试这个没有任何成功:
var imageName = "Red Cat 5";
var myDescription = "A nice kitty";
chrome.storage.local.set({imageName: myDescription}, function()
{console.log('success?');});
chrome.storage.local.set({imageName: myDescription}, function()
{chrome.storage.local.get(imageName, function(r){console.log(r.imageName);});});
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.谢谢!
-----更新以下-----
感谢您对代码的解释.我希望它可以帮助其他任何人.这样做的信息似乎很少!你的回答帮助我想出了这个:
var nameOne = "al";
var nameTwo = "bob";
var nameThree = "carl";
var nameFour = "dan";
var dataObj = {};
dataObj[nameOne] = nameTwo;
dataObj[nameThree] = nameFour;
storage.set(dataObj);
storage.get(dataObj, function(result)
{
console.log(result[nameOne]);
console.log(result[nameThree]);
});
Run Code Online (Sandbox Code Playgroud)
aps*_*ers 31
使用命名对象,而不是匿名对象,并使用方括号设置成员变量:
var dataObj = {};
dataObj[imageName] = myDescription;
chrome.storage.local.set(dataObj, function() { /*...*/ });
Run Code Online (Sandbox Code Playgroud)
它不是最优雅的代码,但它是唯一的方法.
在ES6中,稍微短一些的方法是使用具有动态属性名称的对象文字:
chrome.storage.local.set({
[imageName]: myDescription
}, function() { /*...*/ });
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14345 次 |
最近记录: |