BSMessagePort
Este objeto permite pasar un arreglo asociativo de JavaScript a BrightScript (o viceversa). Solo se puede crear una instancia de BSMessagePort por instancia de roHtmlWidget.
El equivalente en JavaScript es messageport.
Métodos
- PostBSMessage(en el mensaje del diccionario) boolean
El método PostBSMessage() no acepta diccionarios anidados. Lo mismo se aplica al método BrightScript PostJSMessage().
Eventos
El siguiente evento ocurre cuando se envía un mensaje de BrightScript a JavaScript. Aparecerá como un evento EventoMessagePort.
- onbsmessage
MessagePortEvent
Este evento contiene un solo campo:
- datos any readonly
El siguiente script iterará sobre todos los campos recibidos en el evento:
var bsMessage = new BSMessagePort();
bsMessage.onbsmessage = function(msg)
{
for(name in msg.data)
{
console.log('### ' + name + ': ' + msg.data[name]);
}
}En BrightScript, el método roHtmlWidget.PostJSMessage() se puede usar para publicar un mensaje en JavaScript:
- widget.PostJSMessage({ Param1: "Data1", Param2: "Data2", Param3: "Data3" })
Ejemplos
El siguiente script enviará una colección de propiedades a BrightScript:
function myFunction()
{
var bsMessage = new BSMessagePort();
bsMessage.PostBSMessage({complete: true, result: "PASS"});
}El mensaje aparecerá en BrightScript como un roHtmlWidgetEvent. En este caso, GetData().reason es igual a "message" y GetData().message contiene el roAssociativeArray.
while not finished
ev = mp.WaitMessage(30000)
if type(ev) <> "roHtmlWidgetEvent" then
print type(ev)
stop
end if
payload = ev.GetData()
print payload
print "Reason: "; payload.reason
if payload.reason = "message" then
print "Message: "; payload.message
if payload.message.complete = invalid then
stop
else if payload.message.complete = "true" then
finished = true
if payload.message.result = "PASS" then
print "Test passed"
else
print "Test failed: "; payload.message.err
stop
end if
end if
end if
end while