Javascript chrome.chrome扩展存储
我对JavaScript相当陌生,正在创建一个扩展,用于保存用户数据以显示在特定页面上(具体来说是Google教室)。我尝试过使用localStorage,但这会将其保存到特定页面的本地存储中。我需要一个用户能够在Chrome中的任何地方保存和访问数据,我还需要它在新的会话中可用 总之,我需要三个函数。一个用于将用户数据保存到chrome.storage,一个用于从chrome.storage获取给定键的值,另一个用于列出chrome.storage中的所有键 manifest.jsonJavascript chrome.chrome扩展存储,javascript,google-chrome,google-chrome-extension,user-data,Javascript,Google Chrome,Google Chrome Extension,User Data,我对JavaScript相当陌生,正在创建一个扩展,用于保存用户数据以显示在特定页面上(具体来说是Google教室)。我尝试过使用localStorage,但这会将其保存到特定页面的本地存储中。我需要一个用户能够在Chrome中的任何地方保存和访问数据,我还需要它在新的会话中可用 总之,我需要三个函数。一个用于将用户数据保存到chrome.storage,一个用于从chrome.storage获取给定键的值,另一个用于列出chrome.storage中的所有键 manifest.json {
{
"manifest_version": 2,
"name": "AssignMe for Classroom",
"short_name": "AssignMe",
"description": "Create your own assignments on Google Classroom.",
"version": "1.0",
"browser_action": {
"default_icon": "src/icon128.png",
"default_popup": "popup.html"
},
"icons": {
"16": "src/icon16.png",
"19": "src/icon19.png",
"48": "src/icon48.png",
"128": "src/icon128.png"
},
"content_scripts": [{
"matches": ["https://classroom.google.com/*/not-turned-in/all"],
"js": ["displayBackground.js"],
"run_at": "document_end"
}],
"permissions": [
"activeTab",
"storage",
"tabs",
"<all_urls>"
]
}
试试这个
curAssignment = 0;
// save data (you can use .local or .sync)
function saveData() {
chrome.storage.local.set({
Data: {
["Assignment" + curAssignment]: {
Title: title,
Date: date
}
}
}, function() {console.log("Data Saved");});
curAssignment = curAssignment + 1;
}
[“Assignment”+curAssignment]根据已保存的项目数量为新项目提供唯一id
获取存储中的所有项目。这是一种更奇特的方法(设置和获取),它还可以处理错误:
const getStorageData = key =>
new Promise((resolve, reject) =>
chrome.storage.sync.get(key, result =>
chrome.runtime.lastError
? reject(Error(chrome.runtime.lastError.message))
: resolve(result)
)
)
const { data } = await getStorageData('data')
const setStorageData = data =>
new Promise((resolve, reject) =>
chrome.storage.sync.set(data, () =>
chrome.runtime.lastError
? reject(Error(chrome.runtime.lastError.message))
: resolve()
)
)
await setStorageData({ data: [someData] })
您正在寻找文档。文档有点模棱两可。我尝试使用他们的chrome.storage.set,但无法检索数据。
curAssignment = 0;
// save data (you can use .local or .sync)
function saveData() {
chrome.storage.local.set({
Data: {
["Assignment" + curAssignment]: {
Title: title,
Date: date
}
}
}, function() {console.log("Data Saved");});
curAssignment = curAssignment + 1;
}
// load data
loadedAssignment = 0;
function loadData() {
chrome.storage.local.get(["Data"], function(results) {
while (loadedAssignment < results.Data.length) {
loadedTitle = results.Data[loadedAssignment].Title;
loadedDate = results.Date[loadedAssignment].Date;
// your code that handles the loaded data
loadedAssignment = loadedAssignment + 1;
}
curAssignment = results.Data.length;
});
}
// get all items
function getAllItems() {
chrome.storage.local.get(null, function(items) {
var allKeys = Object.keys(items);
});
}
const getStorageData = key =>
new Promise((resolve, reject) =>
chrome.storage.sync.get(key, result =>
chrome.runtime.lastError
? reject(Error(chrome.runtime.lastError.message))
: resolve(result)
)
)
const { data } = await getStorageData('data')
const setStorageData = data =>
new Promise((resolve, reject) =>
chrome.storage.sync.set(data, () =>
chrome.runtime.lastError
? reject(Error(chrome.runtime.lastError.message))
: resolve()
)
)
await setStorageData({ data: [someData] })