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