名前空間付きの JavaScript 関数を呼び出すために、ExternalInterface を使用できますか?
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
名前空間付きの JavaScript 関数を呼び出すために、ExternalInterface を使用できますか?
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
のドキュメントExternalInterface.call
は少し誤解を招きます。最初のパラメーターは関数名でなければならないと述べていますが、これは完全な真実ではありません。適切な JS 式として評価できる任意の文字列にすることができます。実際には
ExternalInterface.call(func, param_1, ... , param_n);
と同等です
eval(func)(param_1, ... , param_n);
したがって、次のことを行うこともできます
ExternalInterface.call("function (foo) { alert(foo); return true; }","test");
この手法は、Flash JS インジェクションに使用されることがあります。これが物事を明確にすることを願っています...
はい。はい、できます。