ServiceWorkerContainer: startMessages() 方法

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

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

startMessages() 方法是 ServiceWorkerContainer 接口的方法,它显式地启动从 Service Worker 分派到其控制下的页面(例如,通过 Client.postMessage() 发送)的消息流。这可以用于更早地响应发送的消息,甚至在页面的内容完成加载之前。

解释

默认情况下,从页面的控制 Service Worker 发送到该页面(使用 Client.postMessage())的所有消息在页面加载时都会排队,并在页面的 HTML 文档加载并解析后(即在 DOMContentLoaded 事件触发后)分派。可以通过调用 ServiceWorkerContainer.startMessages() 来更早地开始分派这些消息,例如,如果您在页面完成加载之前使用 EventTarget.addEventListener() 调用了消息处理程序,但希望立即开始处理消息。

注意:当使用 onmessage 直接设置处理程序时,消息会自动开始发送。在这种情况下,您不需要 startMessages()

语法

js
startMessages()

参数

无。

返回值

undefined.

示例

js
if ("serviceWorker" in navigator) {
  navigator.serviceWorker.register("/sw.js").then(() => {
    console.log("Service Worker Registered");
  });
}

// …

navigator.serviceWorker.addEventListener("message", (e) => {
  // …
});

navigator.serviceWorker.startMessages();

规范

规范
Service Workers
# navigator-service-worker-startMessages

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。