从Flash调用命名空间的JavaScript函数

时间:2010-02-09 16:58:06

标签: javascript flash namespaces externalinterface

我可以使用ExternalInterface来调用命名空间的JavaScript函数吗?

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

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

2 个答案:

答案 0 :(得分:2)

ExternalInterface.call的文档有点误导。它声明第一个参数必须是函数名,这不是全部真相。它可以是任何可以作为proprer 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 injection。希望这澄清事情...

答案 1 :(得分:1)

是。是的,你可以。