实现chrome.storage.sync set / get API,有没有办法将新数据添加到现有的哈希/数组而不会覆盖保存的数据?
答案 0 :(得分:0)
默认情况下,如果将新条目写入已定义的键,则将覆盖现有的键/值对。所以我开发了一种解决方案作为解决方案。该函数从给定网页上的SelectedText中检索字符串。将它们符合chrome存储阵列,创建了一个在弹出窗口中突出显示的历史记录。
让我们跳进逻辑:
// Selected History Functionality
var history = [];
chrome.tabs.executeScript(null, {
code: "window.getSelection().toString();"
}, function(query) {
chrome.storage.sync.get('list', function(data) {
if(typeof data.list == 'undefined' ) {
chrome.storage.sync.set({'list': query}, function() {
console.log("link key and value created");
});
} else {
if(query != '') {
var persistentData = data.list;
history.push(persistentData, query);
chrome.storage.sync.set({'list': history}, function() {
console.log("fetched and appended new data successfully");
});
}
}
});
document.getElementById('getHistory').onclick = function() {
chrome.storage.sync.get('list', function(historyEntries) {
document.getElementById('historyContainer').innerHTML = historyEntries.list;
});
}
});
我正在检索存储中存储的最新信息。将它推入一个超出函数范围的空数组以及新条目&然后覆盖键/值对,如果它不存在(第一个条目)我们创建它。然后将数据传递给弹出窗口中的空div。
答案 1 :(得分:0)
解决:我发布此信息是为了更好地说明Makyen&我自己。这段代码只是扩展后台脚本的一部分,对于任何有兴趣查看整个文件的人,请点击此处https://twitter.com/WEBrip/status/892386915915243523
历史逻辑:
// Selected History Functionality
chrome.tabs.executeScript(null, {
code: "window.getSelection().toString();"
}, function(query) {
chrome.storage.sync.get('list', function(data) {
if(typeof data.list == 'undefined' ) {
chrome.storage.sync.set({'list': query}, function() {
console.log("link key and value created");
});
} else {
if(query[0] !== '') {
data.list.push(query[0]);
chrome.storage.sync.set({'list': data.list}, function() {
console.log("fetched and appended new data successfully");
});
}
}
});
getHistory.onclick = function() {
chrome.storage.sync.get('list', function(historyEntries) {
document.getElementById('historyContainer').innerHTML = historyEntries.list;
});
}
});