Escucha: del servidor a la página web
Así se envían mensajes desde MobileTogether Server a una página web:
1.La acción Devolver mensaje incrustado del flujo de trabajo envía el mensaje al IFrame en forma de cadena JSON serializada. En la acción puede especificar qué mensaje se envía.
2.Cuando el mensaje alcanza el IFrame, se reenvía a la página web, donde un agente de escucha de eventos detecta el evento message y llama a una función que se encargará de procesar el mensaje. Para registrar un agente de escucha de eventos para el evento message utilice: window.addEventListener('message', ProcessReturnMsg)
3.La función (ProcessReturnMsg en este caso) toma como parámetro el evento message en forma de objeto JSON deserializado. Ahora se puede acceder al objeto de la forma habitual para usarlo en la página HTML. Por ejemplo:
function ProcessReturnMsg(m) {
msgVar = m.data.json.books
...
}
Para más información consulte las páginas AddEventListener y MessageEvent de la red de desarrolladores de Mozilla.
Ejemplo
El diseño contiene una fuente de página $MT_EMBEDDEDMESSAGE (su estructura puede verse en la imagen). Recuerde que el elemento raíz de esta fuente de página siempre se llamará json (porque se trata de una fuente de página JSON).
Podemos enviar todo el contenido de esta fuente de página (o parte del contenido) como evento message a la solución que está en el IFrame. Una manera de hacerlo sería, por ejemplo, usar un botón del diseño que tenga definida una acción Devolver mensaje incrustado para el evento AlHacerClic (imagen siguiente). En la expresión XPath que aparece a continuación puede ver que como evento de mensaje se envía el contenido del nodo $MT_EMBEDDEDMESSAGE, es decir, el nodo json y su contenido.
Ahora, en la página HTML, podemos registrar un agente de escucha de eventos: window.addEventListener('message', ProcessReturnMsg)
A partir de ahora se puede acceder al objeto de la forma habitual y usarlo en la página HTML. Por ejemplo:
function ProcessReturnMsg(m)
msgVar = m.data.json.books
/* 'm' es el evento de mensaje HTML que se pasa a ProcessReturnMsg */
/* 'data' pertenece al evento y almacena el mensaje que devuelve la acción MT */
/* 'json' es el objeto JSON que está dentro del mensaje */
...
}
En el ejemplo anterior se guardará el contenido de books en msgVar.