StorageArea.set()

在存储区域存储一个或多个项目,或更新已存储的项目。

当您使用此 API 存储或更新值时,会触发 storage.onChanged 事件。

请注意,当您在 sync 存储区域存储项目时,浏览器会强制执行每个扩展程序可以存储的数据量的配额。请参阅 同步数据的存储配额

这是一个异步函数,返回一个 Promise

语法

js
let settingItem = browser.storage.<storageType>.set(
  keys             // object
)

其中 <storageType> 是可写存储类型之一 — storage.localstorage.sessionstorage.sync

参数

keys

一个包含要存储的一个或多个键/值对的对象。如果项目中已存在该键,则其值将被更新。

值可以是原始类型(例如数字、布尔值或字符串)、ArrayObject 类型。

通常无法存储其他类型,例如 FunctionDateRegExpSetMapArrayBuffer 等。某些不支持的类型会恢复为空对象,而其他类型则会导致 set() 抛出错误。这种行为是浏览器特定的。

注意: 如果您想从存储中删除键,请使用 storage.storageArea.remove。如果您想用空值覆盖值,请使用 null,即 key: null

返回值

如果操作成功,则一个 Promise 将以无参数的形式完成。如果操作失败,则 Promise 会带有错误消息被拒绝。

示例

js
function setItem() {
  console.log("OK");
}

function gotKitten(item) {
  console.log(`${item.kitten.name} has ${item.kitten.eyeCount} eyes`);
}

function gotMonster(item) {
  console.log(`${item.monster.name} has ${item.monster.eyeCount} eyes`);
}

function onError(error) {
  console.log(error);
}

// define 2 objects
let monster = {
  name: "Kraken",
  tentacles: true,
  eyeCount: 10,
};

let kitten = {
  name: "Moggy",
  tentacles: false,
  eyeCount: 2,
};

// store the objects
browser.storage.local.set({ kitten, monster }).then(setItem, onError);

browser.storage.local.get("kitten").then(gotKitten, onError);
browser.storage.local.get("monster").then(gotMonster, onError);

浏览器兼容性

注意:此 API 基于 Chromium 的 chrome.storage API。本文档源自 Chromium 代码中的 storage.json