ServiceWorkerContainer:messageerror 事件
注意:此功能在 Web Workers 中可用。
當傳送到相關工作執行緒的傳入訊息無法反序列化時,會向 ServiceWorkerContainer 觸發 messageerror 事件。
此事件不可取消,也不會冒泡。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
js
addEventListener("messageerror", (event) => { })
onmessageerror = (event) => { }
事件型別
一個 MessageEvent。繼承自 Event。
事件屬性
此介面還繼承了其父級 Event 的屬性。
MessageEvent.data只讀-
由訊息傳送者傳送的資料。
MessageEvent.origin只讀-
一個字串,表示訊息傳送者的源。
MessageEvent.lastEventId只讀-
一個字串,表示事件的唯一 ID。
MessageEvent.source只讀-
一個
MessageEventSource(可以是 WindowProxy、MessagePort或ServiceWorker物件),表示訊息傳送者。 MessageEvent.ports只讀-
一個
MessagePort物件陣列,表示訊息傳送通道(如果適用,例如在通道訊息傳遞或向共享工作者傳送訊息時)關聯的埠。
示例
在此示例中,服務工作執行緒從 fetch 事件獲取客戶端 ID,然後使用 Client.postMessage 向其傳送訊息。
js
// service-worker.js
async function messageClient(clientId) {
const client = await self.clients.get(clientId);
client.postMessage("Hi client!");
}
self.addEventListener("fetch", (event) => {
messageClient(event.clientId);
event.respondWith(() => {
// …
});
});
服務工作執行緒可以透過監聽 messageerror 事件來監聽訊息反序列化錯誤。
js
// main.js
navigator.serviceWorker.addEventListener("messageerror", (event) => {
console.error("Receive message from service worker failed!");
});
或者,指令碼可以使用 onmessageerror 來監聽訊息反序列化錯誤。
js
// main.js
navigator.serviceWorker.onmessageerror = (event) => {
console.error("Receive message from service worker failed!");
};
規範
| 規範 |
|---|
| Service Workers # dom-serviceworkerglobalscope-onmessageerror |
瀏覽器相容性
載入中…