ServiceWorkerContainer: startMessages() 方法
注意:此功能在 Web Workers 中可用。
ServiceWorkerContainer 接口的 startMessages() 方法显式地启动从 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 |
浏览器兼容性
加载中…