当前位置:  开发笔记 > 编程语言 > 正文

如何在JavaScript和Flash之间进行跨域通信?

如何解决《如何在JavaScript和Flash之间进行跨域通信?》经验,为你挑选了1个好方法。

如何打开"跨域安全性",以便页面上的JavaScript可以自由地与SWF通信,即使这是在另一个域上托管的?

我确实知道默认情况下会阻止此函数通信,但是通过使用名为"crossdomain.xml"的文件和actionscript 3函数:system.Security.allowDomain("*").虽然我没有取得足够的成功,但我没有洞察力知道哪一个是开放的.

是否有其他隐藏的安全层,在这种情况下我需要考虑哪些?

我是否通过这种设置以某种方式为潜在的黑客开放我的代码?

(如果您想知道:是的,我必须在一个场景中进行此工作,其中html托管在一个域上,JavaScript从另一个域外部添加,而SWF由来自第三个域的JavaScript嵌入 - 不要问为什么,解释起来太复杂了 - 我也希望我能在一个域中托管整个事情.



1> Josh Tynjala..:

Security.allowDomain("www.example.com")在SWF中使用将允许来自www.example.com的页面中的JS调用SWF中公开的函数ExternalInterface.addCallback().域和子域必须完全匹配.使用"*"将允许任何域与SWF通信,但如果您有一个特定域,则最好使用它.

在HTML嵌入代码中设置allowScriptAccessalways允许SWF调用JavaScript函数.

捕获许多开发人员的一件事是,在SWF完成加载之前,JavaScript将无法调用SWF上的函数.不幸的是,没有基于JS的事件可以告诉你什么时候SWF准备好了(至少我发现了).我通常做的解决这个问题的方法是在SWF完成加载时立即从SWF调用JS函数,以通知页面SWF已准备就绪.

这里和那里有一些抽象,但如果你看一下YUI Charts的源代码,你或许可以弄明白Yahoo! 得到跨域JS/SWF通信工作.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有