ServiceWorkerContainer: startMessages() 方法
注意:此功能在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 的浏览器中加载。