之前其实也写过一篇类似的博文,但是后来,时间长了,flash更新了,安全策略也不一样了。 结果我上个月调试这个又花了好长时间,所以还是重写一下吧。以下代码的安全规则是对应flash player 11.5。

flash调用javascript的函数

flash调用javascript的函数是不需要设置安全参数的。调用的方法是:

ExternalInterface.call("functionname", ...args);

可以返回任意值,尽量对返回值进行校验吧,或者这个值只是弹个提示框然后不要跟服务器交互。

javascript调用flash的函数

可以通过这样的方法注册允许被javascript调用的函数:

ExternalInterface.addCallback("functionname", function():returnType{
	do something...
	return ret;
});

这个是非常复杂的事情,首先需要在嵌入flash的html标签加入:<param name="allowScriptAccess" value="always" />, 然后在程序第一次注册之前(建议在程序入口处添加):flash.system.Security.allowDomain(sourceDomain)

或许你现在想测试一下这个调用是否成功,那么请在httpserver的目录测试,本地目录是死都不行的。

好了记录下来了,以后不用到处找了。