我可以使用 ExternalInterface 调用命名空间的 JavaScript 函数吗?
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
我可以使用 ExternalInterface 调用命名空间的 JavaScript 函数吗?
//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 注入。希望这能澄清事情......
是的。是的你可以。