我是一个相对较新的JavaScript和全新的Chrome扩展程序编程,我在与可以在浏览器中本地存储数据的存储API进行交互时遇到了一些问题。仔细阅读chrome.storage文档后,我仍然无法将任何内容加载到存储中。这是我到目前为止分为两部分的代码,第一部分是我定义名称和标签的代码。它调用了应该与存储交互的第二个函数:
var groupmaker = function() {
var $tabs = document.querySelector("tabs-");
var $input = document.querySelector("input");
chrome.tabs.query({windowId: chrome.windows.WINDOW_ID_CURRENT}, function(tabs) {
setData($input.value, tabs)
$tabs.innerHTML = `<h1>${$input.value}</h1>`;
tabs.forEach(tab => {
$tabs.innerHTML += `
<a href='${tab.url}'>
<p>${tab.title}</p>
</a>
`;
});
$tabs.querySelector('h1').addEventListener('click', toggleHidden);
});
};
var setData = function(name, tabs){
chrome.storage.local.set({ name: JSON.stringify(tabs) }, function(){
// Now data has been saved get ALL data (by passing in null)
chrome.storage.local.get(null, function(items){
console.log(items)
});
});
}
有没有人在此代码中看到错误?除了“存储”权限之外,在manifest.json文件中是否需要设置任何特殊的扩展才能工作?任何帮助将不胜感激。
答案 0 :(得分:0)
最后,我理解你想要的东西。
当您拨打以下行时,我猜您希望name
的值成为关键,但实际上它使用 "name"
作为键,这意味着您的存储空间中只有一个项目,其关键字为"name"
。
chrome.storage.local.set({ name: JSON.stringify(tabs) })
您想要使用[name]
,这称为Computed property names。
chrome.storage.local.set({ [name]: JSON.stringify(tabs) })