ExtendableCookieChangeEvent
注意:此功能仅在服务工作线程中可用。
ExtendableCookieChangeEvent
是 Cookie 存储 API 的一个接口,它是传递给 cookiechange
事件的事件类型,该事件在 ServiceWorkerGlobalScope
上触发,当任何与服务工作线程的 Cookie 更改订阅列表匹配的 Cookie 发生更改时触发。Cookie 更改事件由一个 Cookie 和一个类型组成。(“changed” 或“deleted”)。
导致分派 ExtendableCookieChangeEvent
的 Cookie 更改包括:
- 新创建的 Cookie 未立即删除。在这种情况下,
type
为“changed”。 - 新创建的 Cookie 立即删除。在这种情况下,
type
为“deleted”。 - Cookie 被删除。在这种情况下,
type
为“deleted”。
注意:如果由于插入了具有相同名称、域名和路径的另一个 Cookie 而替换了 Cookie,则会忽略该替换,并且不会触发更改事件。
构造函数
-
创建一个新的
ExtendableCookieChangeEvent
。
实例属性
此接口还继承了来自 ExtendableEvent
的属性。
-
返回一个包含已更改 Cookie 的数组。
-
返回一个包含已删除 Cookie 的数组。
实例方法
此接口还继承了来自 ExtendableEvent
的方法。
示例
在下面的示例中,我们使用 CookieStoreManager.getSubscriptions()
获取现有订阅的列表。(在服务工作线程中,需要订阅才能侦听事件。)我们使用 CookieStoreManager.unsubscribe()
取消订阅现有订阅,然后使用 CookieStoreManager.subscribe()
订阅名为“COOKIE_NAME”的 Cookie。如果该 Cookie 发生更改,则事件侦听器会将事件记录到控制台。这将是一个 ExtendableCookieChangeEvent
对象,其 changed
或 deleted
属性包含修改后的 Cookie。
self.addEventListener("activate", (event) => {
event.waitUntil(async () => {
const subscriptions = await self.registration.cookies.getSubscriptions();
await self.registration.cookies.unsubscribe(subscriptions);
await self.registration.cookies.subscribe([
{
name: "COOKIE_NAME",
},
]);
});
});
self.addEventListener("cookiechange", (event) => {
console.log(event);
});
规范
规范 |
---|
Cookie 存储 API # ExtendableCookieChangeEvent |
浏览器兼容性
BCD 表仅在浏览器中加载