Appeler un JavaScript à partir de Flash Fonction d'espace de nom
-
19-09-2019 - |
Question
Puis-je utiliser ExternalInterface pour appeler une fonction JavaScript espaces de noms?
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
La solution
La documentation de ExternalInterface.call
est un peu trompeur. il indique le premier paramètre doit être un nom de fonction, ce qui est la vérité. il peut être une chaîne qui peut être évaluée comme l'expression d'un proprer. En fait
ExternalInterface.call(func, param_1, ... , param_n);
est équivalent à
eval(func)(param_1, ... , param_n);
vous pouvez tout aussi bien faire ce qui suit
ExternalInterface.call("function (foo) { alert(foo); return true; }","test");
Cette technique est parfois utilisée pour flash injection JS . espérons que cela clarifie les choses ...
Autres conseils
Oui. Oui, vous pouvez.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow