MobileTogether Server から Web ページへメッセージを次の段階で送信することができます:
1.ワークフローの 埋め込まれたメッセージをバック アクションは、メッセージをシリアル化された JSON 文字列のフォーマットで IFrame に送信します。アクション内で送信するメッセージを指定することができます。
2.IFrame にメッセージが達すると、イベントリスナーがメッセージ イベントをピックアップし、メッセージを処理する関数を呼び出し、 Web ページに転送されます。メッセージ イベントのためにイベントリスナーを以下のとおり登録することができます:window.addEventListener('message', ProcessReturnMsg)
3.上のサンプル内の関数 (ProcessReturnMsg ) は、シリアル化が解除された JSON オブジェクトの書式のメッセージ イベントをパラメーターとして取ります。オブジェクトにアクセスし、 HTML ページ内で使用することができます。例:
function ProcessReturnMsg(m) {
msgVar = m.data.json.books
...
}
詳細に関しては、 Mozilla Developer Network Web サイトで AddEventListener と MessageEvent の詳細を参照してください。
下のスクリーンショットに示されるように、デザインには構造を持つ $MT_EMBEDDEDMESSAGE ページソースが含まれています。このページソースのルート要素は(JSON ページソースであるため) json という名前が与えられます。
ページソースの全てのコンテンツ (またはその一部) を IFrame 内のソリューションに message イベントとして送信することができます。これを行うには、例えば、デザイン内に、 クリック時 イベントのためにが 埋め込まれたメッセージをバックする アクション設定されているボタンがある場合などです (下のスクリーンショットを参照)。下の XPath 式では、 $MT_EMBEDDEDMESSAGE ノードのコンテンツがメッセージイベントとして送信されます。すなわち、 json ノードとのコンテンツが送信されます。
HTML ページ内では、イベント リスナーを登録することができます:window.addEventListener('message', ProcessReturnMsg)
オブジェクトにアクセスし、 HTML ページ内で使用することができます。例:
function ProcessReturnMsg(m) {
msgVar = m.data.json.books
/* 'm' is the HTML message event that is passed to ProcessReturnMsg */
/* 'data' belongs to the event and holds the message returned by the MT action */
/* 'json' is the JSON object that is contained in the message */
...
}
上のサンプルでは、books のコンテンツは msgVar に保存されます。