日期:2014-05-16  浏览次数:20417 次

ExternalInterface.call()实现的as和js通信出现问题和解决方法

????? ?最近碰到一个棘手的问题,就是设计As与Js通信的Flex项目编译后,将bin-debug目录放在其他路径下,其中的As与Js 通信就会出现问题。而且连SDK中的sdks\3.2.0\frameworks\javascript\fabridge\samples下的例子也会运行不正常。

?????? try catch之后获取异常为#2060安全沙箱冲突的问题。但是如何解决这个问题呢。

?

?????? google了一下,找到了这篇不错的blog,里面讲的很详细,既不赘述其原理了,例如:

???????????? http://apps.hi.baidu.com/share/detail/16158883

?

???????主要原因就是Flex安全沙箱的问题,通过上面的博客解决的办法有了。

?

????????? 1.找到本地计算机Flash Player的安装路径,我的是win7路径是:

???????????????? (C:\Windows\SysWOW64\Macromed\Flash\FlashPlayerTrust),

?????????????????(注:其中的FlashPlayerTrust文件夹如果没有需要自己创建,xp的路径应该是:C:\Windows\System32\Macromed\Flash\FlashPlayerTrust)

????????? 2.在FlashPlayerTrust文件夹中创建一个.cfg(自定名称即可),文件内容为

??????????????????c:\

????????????????? d:\

??????????????????e:\

????????????????? (注:这里可以指定将来插件的安装路径,减小风险。每个路径占一行,用#添加注释)

????????? 3.讲过如上操作放在c/d/e盘下的flash文件就能正常的完成As和Js的通信了。

?

????? 问题的关键在于Flex的安全机制,Flex的安全模型是围绕SWF文件、本地数据和Internet URL等这些对象资源设计的。设计到上述问题的应该是计算机管理用户控制。

?

????? 管理用户和安装应用程序可以指定本地swf文件注册为受信。这些swf文件会被分配到受信的本地沙箱。他们可以与任何其他swf文件进行交互,也可以从任何位置(远程或本地)加载数据。

??????插件中需要加入上述授权文件。

?

?????? 通过上述设置,通讯正常了,通过这个问题对安全沙箱的安全机制了解了不少,对处理安全问题方面的内容有机攒了点经验。

??????????

????