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