Javascript chrome.chrome扩展存储

Javascript 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 {

我对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] })