从actionscript调用javascript函数

时间:2009-10-23 11:21:23

标签: javascript flash externalinterface

我正在尝试从actionscript调用javascript函数。

截至目前,我正在使用'ExternalInterface'并且可以取得部分成功。

我可以调用函数(没有任何范围分辨率),例如“scanDNA()”,这是所有人都可以看到的。但我无法调用函数(范围指定)之类的 “Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA()”。

请告诉我,我怎样才能做到这一点。

谢谢和问候,

SachinJadhav。

3 个答案:

答案 0 :(得分:0)

如何在JS中创建一个方法来调用函数?

function scanDNAinSomeScope(){
    Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA();
}

使用scanDNAinSomeScope拨打ExternalInterface

更新:

是的,在这种情况下,您需要为每个范围创建一个函数。但是,您实际上只为需要调用的函数创建。我相信你不需要从Flash中调用不同范围的函数。

有一种解决方法,使用JS函数,如:

function evil(str){
    eval(str);
}

这可能是一个安全漏洞。但我不是安全专家,所以我不知道它实际上有什么问题......我只知道“eval是邪恶的”:P

答案 1 :(得分:0)

我从来没有发现任何问题。你的javascript范围结构是如何设置的?

也许在外部接口调用中省略“()”可以解决问题..

如果我这样做

var animals = {}
animals.mammals = {}
animals.mammals.test = function() {
  return "whee";
}

和闪存(CS4)

var x:String = ExternalInterface.call('animals.mammals.test');
trace(x);

我得到了正确的结果。

答案 2 :(得分:0)

使用javascript伪协议效果很好。