cookies.onChanged

cookies API 的 onChanged 事件會在擴充套件程式可以訪問的 cookie 被設定或移除時觸發。

注意:儲存分割槽 啟用時,cookies.Cookie.partitionKey 包含 cookie 儲存分割槽的描述。修改 cookie 時,將此值傳遞給 cookies.set()cookies.remove() 非常重要,以確保擴充套件程式能夠與正確的 cookie 一起工作。

請注意,更新 cookie 的屬性是一個分為兩步的過程

  1. 首先,要更新的 cookie 會被移除,生成一個帶有 overwritecookies.OnChangedCause 的通知。
  2. 然後,會寫入一個帶有更新值的 cookie,生成一個帶有 explicitcookies.OnChangedCause 的第二個通知。

語法

js
browser.cookies.onChanged.addListener(listener)
browser.cookies.onChanged.removeListener(listener)
browser.cookies.onChanged.hasListener(listener)

此 API 也可作為 browser.cookies.onChanged.* 使用。

事件有三個函式

addListener(listener)

向此事件新增監聽器。

removeListener(listener)

停止監聽此事件。listener 引數是要移除的偵聽器。

hasListener(listener)

檢查 listener 是否已為此事件註冊。如果正在監聽,則返回 true,否則返回 false

addListener 語法

引數

監聽器

此事件發生時呼叫的函式。該函式會傳遞以下引數:

changeInfo

一個包含發生更改的詳細資訊的 object。其屬性為:

已移除

一個 boolean,如果 cookie 被移除則為 true,否則為 false

一個 cookies.Cookie 物件,包含有關已設定或已移除的 cookie 的資訊。

cause

一個 cookies.OnChangedCause 值,表示 cookie 更改的根本原因。

示例

此示例監聽 onChanged 事件,並記錄 changeInfo 引數中的詳細資訊。

js
browser.cookies.onChanged.addListener((changeInfo) => {
  console.log(
    `Cookie changed: \n` +
      ` * Cookie: ${JSON.stringify(changeInfo.cookie)}\n` +
      ` * Cause: ${changeInfo.cause}\n` +
      ` * Removed: ${changeInfo.removed}`,
  );
});

擴充套件程式示例

瀏覽器相容性

注意: 此 API 基於 Chromium 的 chrome.cookies API。本文件源自 Chromium 程式碼中的 cookies.json