ExtendableCookieChangeEvent

安全上下文:此功能仅在安全上下文(HTTPS)中可用,且在某些或所有支持的浏览器中可用。

注意:此功能仅在服务工作线程中可用。

ExtendableCookieChangeEventCookie 存储 API 的一个接口,它是传递给 cookiechange 事件的事件类型,该事件在 ServiceWorkerGlobalScope 上触发,当任何与服务工作线程的 Cookie 更改订阅列表匹配的 Cookie 发生更改时触发。Cookie 更改事件由一个 Cookie 和一个类型组成。(“changed” 或“deleted”)。

导致分派 ExtendableCookieChangeEvent 的 Cookie 更改包括:

  • 新创建的 Cookie 未立即删除。在这种情况下,type 为“changed”。
  • 新创建的 Cookie 立即删除。在这种情况下,type 为“deleted”。
  • Cookie 被删除。在这种情况下,type 为“deleted”。

注意:如果由于插入了具有相同名称、域名和路径的另一个 Cookie 而替换了 Cookie,则会忽略该替换,并且不会触发更改事件。

Event ExtendableEvent ExtendableCookieChangeEvent

构造函数

ExtendableCookieChangeEvent()

创建一个新的 ExtendableCookieChangeEvent

实例属性

此接口还继承了来自 ExtendableEvent 的属性。

ExtendableCookieChangeEvent.changed 只读

返回一个包含已更改 Cookie 的数组。

ExtendableCookieChangeEvent.deleted 只读

返回一个包含已删除 Cookie 的数组。

实例方法

此接口还继承了来自 ExtendableEvent 的方法。

示例

在下面的示例中,我们使用 CookieStoreManager.getSubscriptions() 获取现有订阅的列表。(在服务工作线程中,需要订阅才能侦听事件。)我们使用 CookieStoreManager.unsubscribe() 取消订阅现有订阅,然后使用 CookieStoreManager.subscribe() 订阅名为“COOKIE_NAME”的 Cookie。如果该 Cookie 发生更改,则事件侦听器会将事件记录到控制台。这将是一个 ExtendableCookieChangeEvent 对象,其 changeddeleted 属性包含修改后的 Cookie。

js
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 表仅在浏览器中加载