有人能确认ExternalInterface在file:
协议上是否有效,或者指向一些说明它无法使用的文档吗?
有人能确认ExternalInterface在file:
协议上是否有效,或者指向一些说明它无法使用的文档吗?
而对于本地信任沙箱,它的定义如下:在本地 HTML 文件和本地 SWF 文件之间进行双向脚本编写,例如使用 ExternalInterface 类,需要涉及的 HTML 文件和 SWF 文件都位于本地信任沙箱中。这是因为浏览器的本地安全模型与 Flash Player 的本地安全模型不同。
所以,用户或安装程序必须将 swf 放入本地信任沙箱中。本地信任沙箱——已注册为受信任的本地 SWF 文件(由用户或安装程序注册)将放置在本地信任沙箱中。系统管理员和用户还可以根据安全考虑重新分配(移动)本地 SWF 文件到或从本地信任沙箱中(请参阅管理用户控件和用户控件)。分配给本地信任沙箱的 SWF 文件可以与任何其他 SWF 文件交互,并且可以从任何地方(远程或本地)加载数据。
默认情况下,如果从file://页面中尝试使用ExternalInterface,则会抛出Security Error #2060。但是,如果您向嵌入代码添加<param name="allowscriptaccess" value="always"/>
选项,则应该能够与 JavaScript 通信。
ExternalInterface的文档在addCallback()和call()的异常文档中引用了这一点。
编辑:在下面的评论中进一步讨论后,似乎尽管此方法在我的 Mac 上有效,但它在 Windows 上无效。Erik 的答案提供了更多关于为什么会失败的细节。
<param name="allowscriptaccess" value="always"/>
可以防止安全错误吗? - erikvoldflash.system.Security.allowDomain(sourceDomain)
(我在答案中更新了一个链接,请跳转到addCallback方法)。 - Nathan Ostgardflash.system.Security.allowDomain(sourceDomain)
,以便在file:
上工作? - erikvoldimport flash.system.Security;
пәЊз„¶еђҺ我执иҰЊдғ†пәљSecurity.allowInsecureDomain("*");
е’ЊSecurity.allowDomain("*");
дҢ†иү™дәәд№ҺжІҰжњ‰иµ·е€°её®еЉ©дҢњз”ЁгЂ‚ - erikvoldhttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html