cookies.onChanged
cookies
API 的 onChanged
事件在设置或删除扩展程序可以访问的 Cookie 时触发。
备注:
当存储分区处于活动状态时,cookies.Cookie.partitionKey
包含 Cookie 的存储分区的描述。在修改 Cookie 时,将此值传递给 cookies.set()
或 cookies.remove()
很重要,以确保扩展程序使用正确的 Cookie。
请注意,更新 Cookie 属性实际上是一个两步过程:
- 首先,要更新的 Cookie 首先被完全删除,生成一个具有
overwrite
的cookies.OnChangedCause
的通知。 - 接下来,使用更新后的值写入一个新的 Cookie,生成第二个具有
explicit
的cookies.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
。