与 Google Chrome 的存储 API 交互
Interacting with Google Chrome's storage API
我是 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)
});
});
}
有人看到这段代码中的错误吗?除了 "storage" 权限之外,是否需要在 manifest.json 文件中设置任何特殊内容才能使扩展正常工作?任何帮助将不胜感激。
终于明白你的意思了
当您调用以下行时,我猜您希望 name
的 value 作为键,但是,它实际上使用 "name"
作为键,这意味着你的存储中只有一个项目,它的键是"name"
。
chrome.storage.local.set({ name: JSON.stringify(tabs) })
你要的是用[name]
,这个叫Computed property names。
chrome.storage.local.set({ [name]: JSON.stringify(tabs) })
我是 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)
});
});
}
有人看到这段代码中的错误吗?除了 "storage" 权限之外,是否需要在 manifest.json 文件中设置任何特殊内容才能使扩展正常工作?任何帮助将不胜感激。
终于明白你的意思了
当您调用以下行时,我猜您希望 name
的 value 作为键,但是,它实际上使用 "name"
作为键,这意味着你的存储中只有一个项目,它的键是"name"
。
chrome.storage.local.set({ name: JSON.stringify(tabs) })
你要的是用[name]
,这个叫Computed property names。
chrome.storage.local.set({ [name]: JSON.stringify(tabs) })