From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/ja/web/api/messageport/onmessage/index.html | 144 ++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 files/ja/web/api/messageport/onmessage/index.html (limited to 'files/ja/web/api/messageport/onmessage') diff --git a/files/ja/web/api/messageport/onmessage/index.html b/files/ja/web/api/messageport/onmessage/index.html new file mode 100644 index 0000000000..81de5888cd --- /dev/null +++ b/files/ja/web/api/messageport/onmessage/index.html @@ -0,0 +1,144 @@ +--- +title: MessagePort.onmessage +slug: Web/API/MessagePort/onmessage +tags: + - API + - Channel messaging + - MessagePort + - Property + - Reference +translation_of: Web/API/MessagePort/onmessage +--- +
{{APIRef("HTML DOM")}}
+ +

{{domxref("MessagePort")}} インターフェイスの onmessage イベントハンドラは、{{domxref("EventListener")}} であり、ポート上で message 型の {{domxref("MessageEvent")}} が発動した時に呼び出されます。つまり、ポートがメッセージを受信した時に呼び出されます。 +

+ +

{{AvailableInWorkers}}

+ +

構文

+ +
channel.onmessage = function() { ... };
+ +

+ +

次のコードブロックには、{{domxref("MessageChannel()", "MessageChannel.MessageChannel")}} コンストラクタで作成された新しいチャンネルがあります。IFrame が読み込まれた時、{{domxref("MessagePort.postMessage")}} を使用してメッセージと {{domxref("MessageChannel.port2")}} が IFrame へ渡されます。すると、handleMessage ハンドラが onmessage によって IFrame から返されたメッセージに応答し、そのメッセージを段落に出力します。ここで、{{domxref("MessageChannel.port1")}} は、メッセージが到着したときに確認するための待機状態にあります。

+ +
var channel = new MessageChannel();
+var para = document.querySelector('p');
+
+var ifr = document.querySelector('iframe');
+var otherWindow = ifr.contentWindow;
+
+ifr.addEventListener("load", iframeLoaded, false);
+
+function iframeLoaded() {
+  otherWindow.postMessage('Hello from the main page!', '*', [channel.port2]);
+}
+
+channel.port1.onmessage = handleMessage;
+function handleMessage(e) {
+  para.innerHTML = e.data;
+}   
+ +

完全に動作する例は、Github 上の チャンネルメッセージ送信の基本デモ を見てください (実際の動作も確認できます)。

+ +

仕様

+ + + + + + + + + + + + + + + + + + + +
仕様書策定状況備考
{{SpecName('HTML WHATWG', '#handler-messageport-onmessage','onmessage')}}{{Spec2('HTML WHATWG')}}{{SpecName("HTML5 Web Messaging")}} との差異なし。
{{SpecName('HTML5 Web Messaging', '#handler-messageport-onmessage','onmessage')}}{{Spec2('HTML5 Web Messaging')}}仕様の W3C バージョン。
+ +

ブラウザの実装状況

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
基本サポート4{{CompatNo}}10.010.65
Worker 内で利用可能{{CompatVersionUnknown}}{{CompatGeckoDesktop(41)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
機能AndroidChrome for AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
基本サポート4.44{{CompatNo}}{{CompatNo}}10.011.55.1
Worker 内で利用可能{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile(41)}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf