ExternalInterface.addCallback在本地环境中失败

时间:2011-07-15 14:39:59

标签: flash flex actionscript-3 actionscript externalinterface

我认为this question会回答我的问题,但我已经应用了以下修正:

。如

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

html的

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

的.js

params.allowscriptaccess = "always";

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

ExternalInterface.addCallback无法在file://沙箱中使用,除非您设置了受信任位置(根据Tom的回答;这可以解释为什么它可以在您的dev文件夹中工作,如果它设置为一个受信任的位置)。不幸的是,设置受信任的位置可能是一种巨大的痛苦,所以我更喜欢在localhost上设置一个网络服务器来进行测试。

如果你的最终目标是将你的html(和js,swf等)部署到网络服务器,那么你应该只在开发期间遇到这个问题(除了其他跨域问题)。但是,如果您计划在没有网络服务器的情况下进行分发(比如将文件刻录到DVD),那么这将是一个反复出现的问题。

答案 2 :(得分:1)

尝试将要测试此文件夹的文件夹添加到此处的安全设置: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html