首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ExternalInterface.addCallback查找方法名

从ExternalInterface.addCallback查找方法名
EN

Stack Overflow用户
提问于 2011-05-23 22:11:11
回答 2查看 886关注 0票数 1

假设我们有许多ExternalInterface.addCallback函数,如下所示:

代码语言:javascript
复制
ExternalInterface.addCallback( 'foo', handler );
ExternalInterface.addCallback( 'bar', handler );
ExternalInterface.addCallback( 'foobar', handler );

在函数handler中,我想找到通过外部接口调用的方法名,比如foo, bar or foobar;有什么方法吗?例如:

代码语言:javascript
复制
private function handler(...args):void
{
     arguments.callee.arguments[ 0 ];
}

但我怀疑这是否会奏效

EN

回答 2

Stack Overflow用户

发布于 2011-05-23 22:32:46

这应该是可行的。只需从javascript中传递一个参数来标识您的函数,例如字符串。因此,当您在javascript代码中调用flash-function时,请传递一个字符串,然后在处理程序函数中解析该字符串。例如:

actionscript:

代码语言:javascript
复制
ExternalInterface.addCallback( 'foo', handler );

private function handler(s:String):void
{
     if(s == "foo") {
       //foo specific code
     }
}

javascript:

代码语言:javascript
复制
document.getElementById('flashObj').foo("foo");
票数 1
EN

Stack Overflow用户

发布于 2011-05-24 01:51:24

这不完全是你想要的,但它会给你你需要的信息。

只需将您发送给函数名的第一个参数设置为,或者在本例中为具有funcname属性的对象,这样您就可以测试它是否存在。

JavaSCript

代码语言:javascript
复制
 function thisMovie(movieName) {
     if (navigator.appName.indexOf("Microsoft") != -1) {
         return window[movieName];
     } else {
         return document[movieName];
     }
 }
    thisMovie("ExternalInterfaceExample").genericCallBack({ funcname:'foo' })
    thisMovie("ExternalInterfaceExample").genericCallBack({ funcname:'poo' })
    thisMovie("ExternalInterfaceExample").genericCallBack({ funcname:'moo' })

AS3

代码语言:javascript
复制
public function foo( ):void{
  trace('in foo')
}

public function poo( ):void{
  trace('in poo')
}

public function moo( ):void{
  trace('in moo')
}
public function genericCallBack( o:Object ):void{
  trace( 'calling '+o.funcname)
  this[o.funcname]()
}


// add this somewhere in your init process
ExternalInterface.addCallback( 'genericCallBack', genericCallBack );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6098367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档