MessageEvent
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
MessageEvent ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯å¯¾è±¡ã®ãªãã¸ã§ã¯ãããåãåã£ãã¡ãã»ã¼ã¸ã表ãã¾ãã
次ã®ã¡ãã»ã¼ã¸ã表ãããã«ä½¿ç¨ããã¾ãã
- ãµã¼ãã¼éä¿¡ã¤ãã³ã ï¼
EventSource.message_eventãåç §ï¼ã - ã¦ã§ãã½ã±ãã ï¼WebSocket ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®
onmessageããããã£ãåç §ï¼ã - ææ¸éã®ã¡ãã»ã¼ã¸ï¼
Window.postMessage()ããã³Window.message_eventãåç §ï¼ã - ãã£ã³ãã«ã¡ãã»ã¼ã¸ ï¼
MessagePort.postMessage()ããã³MessagePort.message_eventãåç §ï¼ã - ã¯ã¼ã«ã¼ï¼ææ¸éã¡ãã»ã¼ã¸ï¼ä¸è¨ 2 é
ç®ã»ãã
Worker.postMessage(),Worker.message_event,ServiceWorkerGlobalScope.message_eventãªã©ãåç §ï¼ã - ããã¼ããã£ã¹ããã£ã³ãã« (
Broadcastchannel.postMessage()) ããã³BroadcastChannel.message_eventãåç §).
ãã®ã¤ãã³ãã«ãã£ã¦å¼ãèµ·ããããåä½ã¯ã対å¿ãã message ã¤ãã³ãï¼ä¾ãã°ã ä¸è¨ã® onmessage ãã³ãã©ã¼ã使ã£ããã®ï¼ã®ã¤ãã³ããã³ãã©ã¼ã¨ãã¦è¨å®ããã颿°ã®ä¸ã§å®ç¾©ããã¦ãã¾ãã
ã¡ã¢: ãã®æ©è½ã¯ã¦ã§ãã¯ã¼ã«ã¼å ã§å©ç¨å¯è½ã§ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼
MessageEvent()-
æ°ãã
MessageEventã使ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯è¦ªã§ãã Event ããããããã£ãç¶æ¿ãã¦ãã¾ãã
MessageEvent.dataèªåå°ç¨-
ã¡ãã»ã¼ã¸éä¿¡å ã«ãã£ã¦éä¿¡ããããã¼ã¿ã§ãã
MessageEvent.originèªåå°ç¨-
æååã§ãã¡ãã»ã¼ã¸éä¿¡å ã®ãªãªã¸ã³ã表ãã¾ãã
MessageEvent.lastEventIdèªåå°ç¨-
æååã§ããã®ã¤ãã³ãã®ä¸æã® ID ã表ãã¾ãã
MessageEvent.sourceèªåå°ç¨-
MessageEventSourceï¼WindowProxyãMessagePortãServiceWorkerã®ä½ããã®ãªãã¸ã§ã¯ãï¼ã§ãã¡ãã»ã¼ã¸ã®éä¿¡å ã表ãã¾ãã MessageEvent.portsèªåå°ç¨-
MessagePortãªãã¸ã§ã¯ãã®é åã§ãã¡ãã»ã¼ã¸ãéä¿¡ããããã£ã³ãã«ã«é¢é£ãããã¼ãã表ãã¾ãï¼ãã£ã³ãã«ã¡ãã»ã¼ã¸ã³ã°ããå ±æã¯ã¼ã«ã¼ã«ã¡ãã»ã¼ã¸ãéä¿¡ããå ´åãªã©ãé©åãªå ´åï¼ã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯è¦ªã§ãã Event ããã¡ã½ãããç¶æ¿ãã¦ãã¾ãã
initMessageEvent()鿍奍;-
ã¡ãã»ã¼ã¸ã¤ãã³ããåæåãã¾ãããã以ä¸ãã®ã¡ã½ããã使ç¨ããªãã§ãã ããã代ããã«ã
MessageEvent()ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ãã¦ãã ããã
ä¾
åºæ¬çãªå ±æã¯ã¼ã«ã¼ã®ä¾ï¼å ±æã¯ã¼ã«ã¼ãå®è¡ï¼ã«ã¯ 2 ã¤ã® HTML ãã¼ã¸ããããããããã®ãã¼ã¸ãåç´ãªè¨ç®ããã JavaScript ãå®è¡ãã¦ãã¾ããç°ãªãã¹ã¯ãªãããè¨ç®ãå®è¡ããããã«åä¸ã®ã¯ã¼ã«ã¼ãã¡ã¤ã«ã使ç¨ãã¦ãã¾ãããã¼ã¸ã®ç°ãªãã¦ã£ã³ãã¦å ã§åä½ãã¦ãã¦ããã©ã¡ãã®ã¹ã¯ãªãããã¯ã¼ã«ã¼ãã¡ã¤ã«ã«ã¢ã¯ã»ã¹ã§ãã¾ãã
次ã®ã³ã¼ãã¹ããããã¯ã SharedWorker ãªãã¸ã§ã¯ãã®ä½æã SharedWorker() ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ãã¦è¡ãæ§åã示ãã¦ãã¾ããã©ã¡ãã®ã¹ã¯ãªããããããå«ãã§ãã¾ãã
const myWorker = new SharedWorker("worker.js");
次ã«ã©ã¡ãã®ã¹ã¯ãªããã SharedWorker.port ããããã£ã§ä½æããã MessagePort ãªãã¸ã§ã¯ããéãã¦ã¯ã¼ã«ã¼ã«ã¢ã¯ã»ã¹ãã¾ãã onmessage ã¤ãã³ãã addEventListener ã§è£
çãããã¨ã start() ã¡ã½ããã§ãã¼ããæåã§éãã¾ãã
myWorker.port.start();
ãã¼ããéãã¨ãã©ã¡ãã®ã¹ã¯ãªãããã¯ã¼ã«ã¼ã«ã¡ãã»ã¼ã¸ãéä¿¡ããéä¿¡ãããã¡ãã»ã¼ã¸ã port.postMessage() 㨠port.onmessage ã§ããããå¦çãã¾ãã
first.onchange = () => {
myWorker.port.postMessage([first.value, second.value]);
console.log("Message posted to worker");
};
second.onchange = () => {
myWorker.port.postMessage([first.value, second.value]);
console.log("Message posted to worker");
};
myWorker.port.onmessage = (e) => {
result1.textContent = e.data;
console.log("Message received from worker");
};
ã¯ã¼ã«ã¼ã®å
é¨ã§ã¯ã onconnect ãã³ãã©ã¼ã使ç¨ãã¦ä¸è¨ã®åä¸ã®ãã¼ãã«æ¥ç¶ãã¦ãã¾ãããã®ã¯ã¼ã«ã¼ã¨é¢é£ä»ãããããã¼ãã¯ãconnect ã¤ãã³ãã® ports ããããã£ã§æ¥ç¶å¯è½ã§ãããã®å¾ããã¼ããéãããã« MessagePort ã® start() ã¡ã½ããããã¡ã¤ã³ã®ã¹ã¬ããããéä¿¡ãããã¡ãã»ã¼ã¸ãå¦çããããã« onmessage ãã³ãã©ã¼ã使ç¨ãã¾ãã
onconnect = (e) => {
const port = e.ports[0];
port.addEventListener("message", (e) => {
const workerResult = `Result: ${e.data[0] * e.data[1]}`;
port.postMessage(workerResult);
});
port.start(); // Required when using addEventListener. Otherwise called implicitly by onmessage setter.
};
仿§æ¸
| Specification |
|---|
| HTML > # the-messageevent-interface > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
ExtendableMessageEventâ ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ä¼¼ã¦ãã¾ããããã£ã¨æè»æ§ãå¿ è¦ãªã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ä½¿ç¨ããã¾ãã