JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTMLのpostMessage()でクロスドキュメントメッセージを送信する方法

クロスドキュメントメッセージングとは

HTMLでは、新しいiframe要素や新規ウィンドウを作成することで、別のWebブラウジングコンテキストを生成できます。こうした異なるコンテキスト間で安全にデータをやり取りするために使われるのが、postMessage()メソッドです。

postMessage()の2つの引数

postMessage()メソッドには、以下の2つの引数を指定します。

  • message: 送信したいメッセージ本体(文字列やオブジェクトなど)
  • targetOrigin: メッセージの送信先となるオリジン名(例:https://example.com)

実装例:ボタンクリックでiframeにメッセージを送信する

次の例では、ボタンがクリックされたタイミングで、iframe内のウィンドウへメッセージを送信しています。

var iframe = document.querySelector('iframe');
var button = document.querySelector('button');

var clickHandler = function(){
  iframe.contentWindow.postMessage('送信するメッセージです。', 'https://www.tutorialspoint.com');
}
button.addEventListener('click', clickHandler, false);

コードのポイント

  • document.querySelector('iframe')で対象のiframe要素を取得します。
  • iframe.contentWindow.postMessage()を呼び出すことで、iframe内のウィンドウにメッセージを送れます。
  • 第2引数のtargetOriginを正しく指定することで、意図しないドメインへの情報漏洩を防止できます。

メッセージを受信する側の実装

受信側では、messageイベントをリスナーとして登録します。

window.addEventListener('message', function(event) {
  // 送信元オリジンの検証
  if (event.origin !== 'https://www.tutorialspoint.com') return;
  console.log('受信したメッセージ:', event.data);
}, false);

event.originによる送信元チェックを行ってからevent.dataを処理すれば、セキュリティリスクを抑えつつ、安全なクロスドキュメント通信を実現できます。

  1. AndroidでGoogleアシスタントを使ってメッセージを送受信する方法

    メッセージのやり取りをより安全で快適なものにするため、Googleアシスタントでは「声だけで」連絡先にSMSを送信できるようになっています。両手がふさがっているときや、ながら作業中に大活躍する機能です。さらに、運転中のメッセージ入力といった危険な行為を防ぐ効果も期待できます。この機能はWhatsAppのメッセージやボイスメッセージ(音声メッセージ)の送信にも対応しています。Googleアシスタントで音声によるメッセージ送信を始めたい方は、本ガイドの手順に沿って進めてみましょう。AndroidでGoogleアシスタントを使ってSMSを送信する方法まずは、Android端末でGoogleアシスタン

  2. Instagramでボイスメッセージを送る方法!録音・送信・取り消しまで完全ガイド

    クリスマスが近づくと、メッセージのやり取りがぐっと増える季節になります。Instagramもその傾向をしっかり把握しており、ホリデーシーズンに合わせてメッセージをもっと手軽に送れるようにする新機能を導入しました。 それが「ボイスメッセージ」機能です。この機能は、文字入力で疲れてしまう指にとって嬉しい存在。長文を打ち込む必要がなく、指を酷使することなく気持ちを伝えられます。WhatsAppなど他のメッセージングアプリでボイスメッセージを使ったことがある方なら、Instagramでも迷わず使いこなせるでしょう。 Instagramでボイスメッセージを送信する手順 Instagramでボイスメッセ