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 |
瀏覽器相容性
載入中…