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);

浏览器兼容性

BCD 表格仅在浏览器中加载

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