我可以使用ExternalInterface来调用命名空间的JavaScript函数吗?
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
答案 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)
是。是的,你可以。