我正在构建我的第一个Chrome扩展程序,我希望它能够跟踪我观看的电视剧,而我正在尝试将其保存到我正在关注的系列节目中。
我有一个内容脚本,可以返回标题,最新剧集(以及本集的网址)以及该系列封面图片的网址。我目前正在尝试使用我的后台脚本上的一些代码保存它(我确保在清单文件的权限部分下包含“存储”)。
到目前为止,我的脚本看起来像这样(这是在Trying to save and fetch a Javascript object using chrome.storage API?的帮助下开发的):
var bkg = chrome.extension.getBackgroundPage();
response.aID = new Series(response.aTitle,response.aNewEp,response.aNewEpURL,response.aImage);
chrome.storage.sync.set(response.aID, function(){
chrome.storage.sync.get(function(val){
bkg.console.log("The saved title is: ", val.anTitle);
bkg.console.log("The saved newEp is: ", val.anNewEp);
bkg.console.log("The saved newEpURL is: ", val.anNewEpURL);
bkg.console.log("The saved imageURL is: ", val.anImage);
});
});
问题是,脚本似乎一次只存储一个response.aID
,所以我永远不会存储超过1个电视剧的数据。每次我尝试,脚本似乎都会覆盖我以前的条目。所以我想问一下是否有办法一次存储超过1部电视剧?
我已经看过存储一个数组,然后将每个新对象推入该数组(Store an array with chrome.storage.local),但我不太明白所涉及的语法,所以我不确定这对我是否有效。
答案 0 :(得分:0)
不幸的是,您没有包含保存数据的代码段,但我认为您不会使用不同电视剧的索引存储您的数据,因此每次存储另一个时,存储的数据都会被覆盖。
无论如何,我更希望将数据存储在JSON元素中(基本上每个javascript元素都可以转换为一个但继续读取)因为js为这种格式提供了几个函数,这使得它很容易使用。
打开扩展程序时,请加载数据并调用
var data = JSON.parse (yourloadedstring);
所以字符串(应该看起来像{"TVShows": [{"title": "How i met your mother", "url": ...}, {...}]}
(查看here表示JSON的工作方式)得到"翻译"到一个元素,只需通过调用即可读取
data.TVShows[0].title
或
data.TVShows[1].imageURL
您可以在添加新节目时编辑此data
JSON元素,例如说
data.TVShows[2].title = "The Big Bang Theory";
data.TVShows[2].URL= ...;
data.TVShows[2].imageURL= ...;
并通过调用
将此元素保存到chromes存储var dataToSave = JSON.stringify(data);
您的存储空间中有一个字符串,其中包含您需要的所有信息,您可以稍后解析它,如上所述:)
我希望一切都清楚明白,如果不是请问我! 干杯