从 Flash 调用命名空间 JavaScript 函数

发布于 2024-08-20 23:55:23 字数 205 浏览 8 评论 0原文

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

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

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

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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

娇纵 2024-08-27 23:55:23

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 注入。希望这能澄清事情......

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 ...

错々过的事 2024-08-27 23:55:23

是的。是的,你可以。

Yes. Yes you can.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文