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 语法

参数

listener

当此事件发生时调用的函数。该函数被传递以下参数:

changeInfo

包含发生变化的细节的 object。其属性如下:

removed

一个布尔值,如果删除了一个 Cookie,则设置为 true,否则为 false

一个 cookies.Cookie 对象,包含有关设置或删除的 Cookie 的信息。

cause

表示 Cookie 变化背后的基础原因的 cookies.OnChangedCause 值。

浏览器兼容性

BCD tables only load in the browser

示例

此示例监听 onChanged 事件并记录来自 changeInfo 参数的详细信息:

js
browser.cookies.onChanged.addListener((changeInfo) => {
  console.log(
    `Cookie 已变化:\n` +
      ` * Cookie:${JSON.stringify(changeInfo.cookie)}\n` +
      ` * 原因:${changeInfo.cause}\n` +
      ` * 是否删除:${changeInfo.removed}`,
  );
});

示例扩展

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