问题
Can I use ExternalInterface to call a namespaced JavaScript function?
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
回答1:
The documentation of ExternalInterface.call
is a little misleading. it states the first parameter must be a function name, which is not the whole truth. it can be any string that can be evaluated as a proprer JS expression. In fact
ExternalInterface.call(func, param_1, ... , param_n);
is equivalent to
eval(func)(param_1, ... , param_n);
so you may just as well do the following
ExternalInterface.call("function (foo) { alert(foo); return true; }","test");
this technique is sometimes used for Flash JS injection. hope this clarifies things ...
回答2:
Yes. Yes you can.
来源:https://stackoverflow.com/questions/2230869/calling-a-namespaced-javascript-function-from-flash