Communication Javascript

Pour appeler une fonction Javascript à partir d'une application Flex:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="30%" applicationComplete="initApp()">
<mx:Script>
<![CDATA[

import flash.external.ExternalInterface;
private function FlexFromJS():void
{
mytext.text = ExternalInterface.call("FlexFromJS");

}

]]>
</mx:Script>
<mx:TextInput x="235" y="10" id="mytext" width="190"/>
<mx:Button x="235" y="40" label="Récupérer variable de JS" width="190" click="FlexFromJS();"/>
</mx:Application>

Sources:
Fichier MXML
HTML

Pour appeler une fonction Flex à partir de Javascript:

Il faut en premier lieu définir l'interface disponible à partir de JS, en effet, les méthodes ne sont pas directement apellables dans un souci de sécurité.
Pour la définir on utilise:
ExternalInterface.addCallback(methodName:String, method:Method);
Où methodName est le nom de la méthode à appeler à partir de JS et où method est le nom de la méthode effectivement appelé dans Flex.
C'est donc une sorte de mapping de fonctions. Ce mapping est à affectuer à l'initialisation de l'application (applicationComplete="init()")

Ensuite, sous JS, en fonction du navigateur utilisé les méthodes a appeller sont :
window[monAppli].methodName() pour IE
document[monAppli].methodName() pour Firefox
où monAppli est le nom de l'objet flex importé.

<script language="JavaScript">

function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
{
return window[movieName];
}
else
{
return document[movieName];
}
}

function sendToActionScript(value)
{
thisMovie("ExternalInterfaceExample").sendToActionScript(value);
}

</script>

Sources:
JStoFlex2.mxml
JStoFlex2.html

Exemple:
JStoFlex2

page_revision: 34, last_edited: 1203929574|%e %b %Y, %H:%M %Z (%O ago)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License