BSMessagePort
5 min
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 docid\ j x4eoxrp 0fiabapc2ef 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