此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Client:type 属性

基线
广泛可用

自 2018年4月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

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

Client 接口的 type 只读属性表示 service worker 正在控制的客户端类型。

值

一个表示客户端类型的字符串。取值可以是以下之一:

  • "window"
  • "worker"
  • "sharedworker"

示例

js
// service worker 客户端(例如文档)
function sendMessage(message) {
  return new Promise((resolve, reject) => {
    // 注意这是 ServiceWorker.postMessage 版本
    navigator.serviceWorker.controller.postMessage(message);
    window.serviceWorker.onMessage = (e) => {
      resolve(e.data);
    };
  });
}

// 正在控制的 service worker
self.addEventListener("message", (e) => {
  // e.source 是一个客户端对象
  e.source.postMessage(`你好!你的消息是:${e.data}`);
  // 也把 type 值发回给客户端
  e.source.postMessage(e.source.type);
});

规范

规范
Service Workers Nightly
# client-type

浏览器兼容性