我正在尝试从actionscript调用javascript函数。
截至目前,我正在使用'ExternalInterface'并且可以取得部分成功。
我可以调用函数(没有任何范围分辨率),例如“scanDNA()”,这是所有人都可以看到的。但我无法调用函数(范围指定)之类的 “Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA()”。
请告诉我,我怎样才能做到这一点。
谢谢和问候,
SachinJadhav。
答案 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伪协议效果很好。