首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript和Flash之间进行跨域通信?

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

Stack Overflow用户
提问于 2009-01-16 23:30:17
回答 2查看 9.6K关注 0票数 8

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

我可以肯定的是,这个函数通信在默认情况下是被阻止的,但是通过使用名为"crossdomain.xml“的文件和ActionScript3函数: system.Security.allowDomain("*")。但我并没有取得完全的成功,我也没有洞察力知道哪一个是为了什么而开放的。

在这个场景中,我还需要考虑其他隐藏的安全层吗?

我是不是通过这样的设置向潜在的黑客开放了我的代码?

(如果你想知道:是的,如果你想知道:是的,我有在这样的场景中工作,其中html托管在一个域上,JavaScript是从另一个域外部添加的,SWF是由来自第三个域的JavaScript嵌入的-不要问为什么,这太复杂了,解释起来太复杂了-我也希望我可以只在一个域中托管所有的东西)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-16 23:53:40

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

在HTML代码中将allowScriptAccess设置为always将允许SWF调用JavaScript函数。

有一件事吸引了许多开发人员,那就是在SWF加载完成之前,JavaScript将无法调用SWF上的函数。不幸的是,没有基于JS的事件来告诉您SWF什么时候准备好了(至少我已经找到了)。为了解决这个问题,我通常会在SWF完成加载时立即从SWF调用JS函数,以通知页面SWF已准备就绪。

这里和那里有一些抽象,但是如果您看一下YUI Charts的源代码,您可能能够弄清楚雅虎!使跨域JS/SWF通信正常工作。

票数 17
EN

Stack Overflow用户

发布于 2012-06-30 06:50:04

在前面的回答中,我要补充一件事:如果你尝试上面的代码,但它不起作用,检查一下你的站点地址是否包含"www“。我的不起作用,如果我写成这样的话

代码语言:javascript
复制
Security.allowDomain("www.jeremy-knight.com");

我需要把它写成:

代码语言:javascript
复制
Security.allowDomain("jeremy-knight.com");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/452415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档