ExtendableCookieChangeEvent

基線 2025 *
新推出

自 2025 年 6 月起,此功能已在最新的裝置和瀏覽器版本中可用。此功能可能不適用於舊裝置或瀏覽器。

* 此特性的某些部分可能存在不同級別的支援。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能僅在 Service Workers 中可用。

ExtendableCookieChangeEvent 介面是 Cookie Store API 的事件型別,當在 ServiceWorkerGlobalScope 上觸發的 cookiechange 事件匹配服務工作執行緒的 cookie 更改訂閱列表時,會傳遞此事件型別。Cookie 更改事件包含一個 cookie 和一個型別("changed" 或 "deleted")。

導致 ExtendableCookieChangeEvent 被分派的 Cookie 更改是:

  • 一個 cookie 被新建立且未立即移除,或者 cookie 被替換。在這種情況下,type 為 "changed"。
  • 一個 cookie 被新建立並立即移除。在這種情況下,type 為 "deleted"。
  • 一個 cookie 被移除。在這種情況下,type 為 "deleted"。
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 Store API
# ExtendableCookieChangeEvent

瀏覽器相容性