Question

Sur un niveau plus abstrait, une question précédente , il y a trois façons de procéder appeler une fonction javascript sur une page html à partir d’un fichier .swf incorporé utilisant AS3: ExternalInterface, fscommand, et browseToURL.

Comparons ces méthodes (et peut-être d'autres que je n'ai pas énumérées) et discutons des avantages et des inconvénients de chacune d'elles. Pour le moment, ExternalInterface semble comme la voie à suivre en termes de flexibilité. , mais est-ce correct pour toutes les situations? Existe-t-il des avantages concrets en termes de vitesse d'exécution ou autre? Je suis curieux - qu'en pensons-nous?

Était-ce utile?

La solution

ExternalInferface a été créé pour faciliter la communication entre JS et Flash. Il n’est donc pas logique d’utiliser autre chose. La pratique courante consiste à vérifier si elle est disponible en premier en évaluant la valeur de la propriété ExternalInterface.available avant d'appeler certains systèmes JS. Cette propriété vous indique si le fichier SWF dans lequel vous souhaitez appeler un serveur JS se trouve dans un conteneur offrant une interface externe. En d'autres termes, si ExternalInterface fonctionnera. S'il n'est pas disponible, utilisez simplement flash.net.sendToUrl. N'utilisez jamais fscommand () car il utilise VBScript et peut provoquer des conflits avec d'autres VBScript sur une page. De plus, vous ne pouvez envoyer qu’une seule chaîne d’argument avec fscommand et vous devez la scinder du côté JS.

Autres conseils

Tout dépend si vous voulez que la communication soit synchrone ou non, car ExternaInterface peut renvoyer des données telles que navigatoToURL et fscommand soient asynchrones et ne peut appeler qu'une fonction javascript; ils ne peuvent pas renvoyer de valeurs ni de réponse.

De la documentation dynamique en relation avec l'interface externe:

  

A partir d'ActionScript, vous pouvez effectuer les opérations suivantes sur la page HTML:

     
      
  • Appelez n'importe quelle fonction JavaScript.
  •   
  • Passez un nombre quelconque d'arguments, avec des noms.
  •   
  • Transmettez divers types de données (booléen, nombre, chaîne, etc.).
  •   
  • Recevez une valeur de retour de la fonction JavaScript.
  •   
     

À partir de JavaScript sur la page HTML, vous pouvez:

     
      
  • Appeler une fonction ActionScript.
  •   
  • Passer des arguments en utilisant la notation d'appel de fonction standard.
  •   
  • Renvoyez une valeur à la fonction JavaScript.
  •   

La classe flash.external.ExternalInterface remplace directement la classe flash.system.fscommand .

Donc, utiliser ExternalInterface est la méthode préférée ou la communication entre flash et une fonction Javascript, bien que si l'appel est simplement asynchrone, il est correct d'utiliser flash.net.navigateToURL .

ExternalInterface

  • Vous pouvez obtenir la valeur de retour des appels JS-AS et AS-JS
  • Encode vos arguments (appel avec tableaux, objets, etc. Inutile de les encoder)
  • Navigateur croisé
  • Défectueux lorsque vous envoyez du HTML ou du JSON (codage spécial), il s'interrompt en interne

getURL

  • Vous pouvez uniquement appeler JS, vous n'obtenez pas la valeur de retour et vous devez coder vos données
  • était agréable, mais obsolète dans Flash 10, il a été supprimé
  • Il est vraiment supprimé, alors ne l'utilisez pas;)

fscommand

  • Allez, ExternalInterface est la solution (pour 2008).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top