【问题标题】:Calling a Namespaced JavaScript Function from Flash从 Flash 调用命名空间 JavaScript 函数
【发布时间】:2010-02-09 16:58:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript flash namespaces externalinterface


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      是的。是的,你可以。

      【讨论】:

      • 这个问题纯粹是理论上的,所以我上面所说的方式是正确地调用命名空间函数吗?
      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 2011-10-25
      • 2017-10-26
      • 2013-02-15
      • 2017-10-24
      相关资源
      最近更新 更多