cookies.onChanged

当扩展程序可以访问的 cookie 被设置或移除时,cookies API 的 onChanged 事件就会触发。

注意:存储分区 处于活动状态时,cookies.Cookie.partitionKey 包含 cookie 存储分区的描述。在修改 cookie 时,务必将此值传递给 cookies.set()cookies.remove(),以确保扩展程序使用正确的 cookie。

请注意,更新 cookie 的属性是通过两步过程实现的

  1. 首先,要更新的 cookie 会被完全移除,并生成一个带有 cookies.OnChangedCause 值为 overwrite 的通知。
  2. 接下来,使用更新的值写入一个新的 cookie,并生成第二个带有 cookies.OnChangedCause 值为 explicit 的通知。

语法

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

一个 boolean 值,如果 cookie 被移除则设置为 true,否则为 false

一个包含关于已设置或移除的 cookie 信息的 cookies.Cookie 对象。

cause

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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

示例

此示例监听 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