2011-07-15 31 views
0

我想this question会回答我的问题,但我已经应用了以下修复:ExternalInterface.addCallback未能在本地环境

。至于

Security.allowDomain("*"); 
Security.allowInsecureDomain("*"); 

的.html

param name="allowScriptAccess" value="always" /> 

的.js

params.allowscriptaccess = "always"; 

而且我仍然看到ExternalInterface.addCallback方法在本地失败。 它适用于网络服务器,或dev文件夹。但不在任意的本地文件夹中。

+0

我愿意打赌,它当你的SWF完成加载与做。如果它快速完成,就像它在本地完成一样,它可能会导致您的页面设置自己的顺序。有可能swf会在第三方JS库加载之前进入并开始调用。尝试在JS和SWF中设置一些超时以确保事情按正确的顺序发生,并查看是否可以修复它。我不认为你需要安全的东西 - 你只需要,如果你的HTML和你的SWF来自不同的领域。 – Ian

+0

感谢您的评论。我确实有一个机制让html等待flash播放器初始化,我没有想过发生另一种方式的问题。我想在我的情况下它不相关,因为HTML必须在那里,没有外部文件。我现在有一个答案,但我会发布。 – Tom

+0

如何在任意文件夹中打开html? –

回答

2

将swf/html所在的文件夹添加为受信任的位置。右键单击Flash Player>全局设置>高级>受信任的位置。

1

我的猜测是,当您从file:// URL(而不是从网络服务器,甚至是本地主机运行)加载.html页面时,会出现问题。出现此问题的原因是Flash Player对本地文件使用不同的security sandbox

ExternalInterface.addCallback不能在file://沙盒中使用,除非你有一个可信地点集(根据汤姆的回答;这可以解释为什么它在你的开发文件夹中工作,如果它被设置为可信位置)。不幸的是,设置受信任的位置可能会导致严重的痛苦,所以我更愿意在本地主机上设置一个web服务器来执行我的测试。

如果您的最终目标是将您的html(以及js,swf等)部署到网络服务器,那么您应该只在开发过程中遇到此问题(禁止其他跨域问题)。但是,如果您打算在没有网络服务器的情况下发布(比如说将文件刻录到DVD),那么这将是一个反复出现的问题。