CookieStoreManager:subscribe() 方法

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

备注: 此特性在 Service Worker 中可用。

CookieStoreManager 接口的 subscribe() 方法订阅 ServiceWorkerRegistration 的 cookie 更改事件。

语法

js
subscribe(subscriptions)

参数

subscriptions

一个对象列表,每个对象包括以下属性:

name

记录 cookie 名称的字符串。

url

记录 cookie URL 作用域的字符串。可能比 Service Worker Registration 的作用域更小。

返回值

订阅成功时兑现为 undefinedPromise

异常

TypeError

如果传入的 URL 不匹配 Service Worker Registration 的作用域,则抛出该异常。

示例

在此示例中,由 registration 表示的 ServiceWorkerRegistration 订阅了 "/path1" 作用域下命名为 "cookie1" 的 cookie 的变更事件。

js
const subscriptions = [{ name: "cookie1", url: `/path1` }];
await registration.cookies.subscribe(subscriptions);

传给 subscribe() 方法的 URL 可能比 Service Worker Registration 的作用域更小。以下示例订阅是针对 /path/one/ 的,所以只会接收到第一个 cookie 的变更事件,而第二个收不到。

js
registration.cookies.subscribe([{ name: "cookie1", url: "/path/one/" }]); // 订阅 cookie1
cookieStore.set({ name: "cookie1", value: "cookie-value", path: "/path/one/" }); // 收到一个变更事件
cookieStore.set({ name: "cookie1", value: "cookie-value", path: "/path/two/" }); // 不会受到变更事件

规范

Specification
Cookie Store API
# dom-cookiestoremanager-subscribe

浏览器兼容性

BCD tables only load in the browser