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