IT用語辞典バイナリ | さくいん | サイトマップ | ヘルプ | お気に入りに追加  
HTML5 JavaScript API
IT用語辞典バイナリ<パソコン用語・コンピュータ辞書>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
コンピュータ偉人伝<人物・画像・写真・プログラミング>
拡張子辞典<ファイル・変換・変更・表示>
HTML5タグリファレンス
CSS3リファレンス
HTML5 JavaScript API
エクセル関数リファレンス
ITパスポート試験
 
  
  IT用語辞典バイナリ > HTML5 JavaScript API > Web Messagingの使い方 > クロスドキュメントメッセージングを実装するには?
  カテゴリ別さくいん

クロスドキュメントメッセージングを実装するには?

クロスドキュメントメッセージングを実装するには

解説

クロスドキュメントメッセージングはウィンドウ、タブ、フレームなどのドキュメント間でメッセージを送受信するためのAPIです。サーバーが異なる場合などの、オリジンの異なるドキュメントの間での通信が主な用途になります。(オリジンについては、Web Messagingとはを参照ください)

同一オリジンのドキュメントの間では、互いのwindowオブジェクトについて任意の属性の参照・代入やメソッド呼び出しを行うことで、やり取りを行うことができますが、オリジンが異なる場合は、セキュリティ上の危険性があることから、こういった直接のアクセスは許可されていません。

そこで、クロスドキュメントメッセージングでは、オリジンが異なるドキュメントの間でも安全にデータのやり取りを行うため、専用のメソッドイベントが定義されています。

ウィンドウ、タブ、フレームに対してデータを送信するには、送信相手先のwindowオブジェクトの「postMessage(message, targetOrigin)」メソッドを呼び出します。この際、必ず送信先のwindowオブジェクトの参照が必要です。

引数messageには送信するデータを指定します。message複製が相手先に渡されます。windowオブジェクトdocumentオブジェクトといったHTMLドキュメント要素は、通信経由では複製できない仕様になっています。そのため、これらのオブジェクトを指定した場合はDATA_CLONE_ERR例外が発生します。

引数targetOriginには送信相手先のオリジンを文字列で指定します。このオリジンと実際の送信相手先のオリジンが一致しない場合は、データ送信は中止されます。任意の相手先オリジンへの送信を許可する場合はワイルドカード「"*"」を指定します。また、同一オリジンへの送信のみを許可する場合は「"/"」を指定します。

メッセージの送信例

// iframeはhttps://efg.example.org/b.htmlを
// 表示しているiframe要素への参照
iframe.contentWindow.postMessage('送信メッセージ','https://efg.example.org');

送信元のコードで、送信先を表すwindowオブジェクトの「postMessage(message, targetOrigin)」メソッドが呼ばれると、送信先のコードwindowオブジェクトmessageイベントが発生します。

messageイベントのハンドラのevent引数はMessageEventオブジェクトEventオブジェクト属性に加えて以下の属性を持っています。

名前内容
data送られて来たデータ
origin送信元のオリジン
lastEventIdServer-Sent Events で使用。クロスドキュメントメッセージングでは使用しない
source送信元のwindowオブジェクト
ports送信元から送られてきたMessagePortオブジェクト配列。チャネルメッセージングで使用

受信側では、これらの属性を参照して、メッセージを受け取ります。セキュリティ上、送信元のオリジンを確認することが推奨されています。

メッセージの受信例

// messageイベントをハンドリングする
window.onmessage = function(event){
   // 送信元のオリジンを確認
   if(event.origin == 'http://abc.example.com'){
        // 送信されたデータの取出し
        console.log(event.data);
        // 送信されたデータをそのまま返信する
        event.source.postMessage(event.data, event.origin);
   }
}

関連項目



シャープのマスクシャープのマスク
シャープが製造・販売する不織布マスク。
Surface Book 3Surface Book 3
Microsoftが販売するデタッチャブルPC。
Surface Go 2Surface Go 2
Microsoftが発表した2in1 PC。

 ・ITパスポート試験とは
 ・試験範囲と内容
 ・サンプル問題にチャレンジ

 ・Windowsの歴史
ジョン・マッカーシー LISPの開発者
ジョン・マッカーシー
人工知能の研究分野における第一人者。
スティーブ・ジョブズ Appleの共同創設者
スティーブ・ジョブズ
「Mac」や「iPhone」を生み出した経営者。
デニス・リッチー C言語、UNIXの開発者
デニス・リッチー
C言語の設計、UNIXの開発に携わった人物。
».m4b MPEG-4オーディオファイルの拡張子。 up!
».m4r iPhoneの着メロにするAACファイルにつく拡張子。 up!
».xlsx Excel 2007で作成したファイルのデフォルトの拡張子。
».docx Word 2007の標準的な保存形式。XML形式となっている。

2024年3月19日現在
ランキング1   ICT (用語辞典)
ランキング2   AirDrop (用語辞典)
ランキング3   コンテキスト  (用語辞典)
ランキング4   セグメント  (用語辞典)
ランキング5   アノテーション  (用語辞典)
ランキング6   オムニチャネル  (用語辞典)
ランキング7   スワイプ  (用語辞典)
ランキング8   インスタンス化  (用語辞典)
ランキング9   カラム  (用語辞典)
ランキング10   FOMO  (用語辞典)
RSS 0.91 RSS 1.0 RSS 2.0
IT用語辞典バイナリについて運営会社についてお問い合わせ先テクニカルライター募集利用規約
プライバシーポリシー著作権・商標について協力社一覧Weblio 辞書スマート翻訳英和辞典 - Weblio辞書Weblio英会話
©2023 GRAS Group, Inc. All rights reserved.