我有一个使用 Adobe Flash Builder 4.5 用 ActionScript 3 编写的项目。它在 ExternalInterface
中注册了多个函数,以便可以从 JavaScript 调用它们。
如果我访问服务器上的 Flash 文档,例如 http://localhost/
,我就能够成功调用定义的函数。如果我直接在浏览器中打开文件(通过 file:///
协议(protocol)),它将失败并出现如下错误:
*** Security Sandbox Violation ***
SecurityDomain 'null' tried to access incompatible context 'file:///Users/foo/src/bar/baz/bin-debug/app.swf'
合理的安全限制,但它会产生矛盾的后果:我无法调试 ExternalInterface
的使用,因为 Flash Builder 调试器通过 file:
打开文档.
如此重要的功能无法正常调试,这似乎太荒谬了。
如何将调试器与 ExternalInterface
一起使用?
最佳答案
有两种方法可以解决这个问题:
- 通过设置
use-network=false
编译器标志(请参阅:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7a92.html ctrl-f use-network) - 配置 Flash Builder 调试器以在调试时启动 HTTP URL。为此,请单击:运行 -> 调试配置,然后在“启动的 URL 或路径”下输入(例如)“http://localhost/”
我一般更喜欢后者。
关于actionscript-3 - 是否可以通过文件://from Flash Builder?调试ExternalInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13034375/