1

名前空間付きの JavaScript 関数を呼び出すために、ExternalInterface を使用できますか?

//JavaScript
foo.bar = function(baz) {}

// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
4

2 に答える 2

2

のドキュメント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 インジェクションに使用されることがあります。これが物事を明確にすることを願っています...

于 2010-02-09T19:02:57.693 に答える
1

はい。はい、できます。

于 2010-02-09T17:10:42.763 に答える