OpenSocial: Parsen van gegevens van en naar Flash-movie.

Spread the love

De OpenSocial applicaties worden gerenderd / getoond in een iFrame. Hoe is het nu toch mogelijk om de gegevens die ontvangen worden van OpenSocial te gebruiken in een Flash-movie?

FlashVars

Een methode is het meegeven van deze data als ‘FlashVars’. Dit is echter niet de mooiste manier. Er kan nu weliswaar gecommuniceerd worden van OpenSocial naar Flash, maar hoe kan de Flash-movie nu invloed uitoefenen op OpenSocial?

ExternalInterface

Een mooiere manier (ook beter?) is gebruik te maken van de ExternalInterface die Flash kent. Wanneer in ActionScript de volgende package wordt geimporteerd: <code>flash.external.ExternalInterface</code> dan komen er twee methoden beschikbaar die erg handig zijn om te kunnen communiceren tussen de Flash-movie en de HTML-pagina waarop de movie ge-embed is.

Communicatie ActionScript -> JavaScript

De eerste methode is: ExternalInterface.call("JAVASCRIPT METHOD","PARAMS"); hiermee kan vanuit ActionScript een JavaScript methode worden aangeroepen die op de HTML-pagina staat. Natuurlijk kunnen hier ook de nodige parameters aan meegegeven worden.

Communicatie JavaScript -> ActionScript

De tweede methode is: ExternalInterface.addCallback(JAVASCRIPT METHOD,ACTIONSCRIPT METHOD); deze methode maakt juist de omgekeerde communicatie mogelijk dus vanuit JavaScript is het nu mogelijk om een ActionScript methode aan te roepen.

Flash Sandbox

Aangezien Flash een redelijk streng sandbox security model kent in verband met cross-side scripting, moeten hier nog de nodige gaatjes in geprikt worden wanneer de Flash-movie en HTML-pagina niet op hetzelfde domain gehost worden. De volgende code zorgt ervoor dat de beperkingen worden opgeheven, gebruik deze code op eigen risico en scherp de regels zoveel mogelijk aan.


Security.allowDomain('*');
Security.allowInsecureDomain("*");

Nu is bi-directionele communicatie tussen de HTML-pagina waarop de Flash-movie ge-embed is en de movie zelf mogelijk.

Zie ook: De andere artikelen in de OpenSocial-categorie

Leave a comment