任何人都可以确认ExternalInterface是否适用于file:
协议,或指向一些说它不会的文档?
答案 0 :(得分:8)
开始看起来这样不起作用。this page说:
两个方向之间的脚本 本地HTML文件和本地SWF 文件 - 例如,使用 ExternalInterface类 - 需要它 HTML文件和SWF文件 涉及本地信任 沙箱。这是因为当地人 浏览器的安全模型不同 来自Flash Player的本地安全性 模型。
这就是它对本地信任的沙箱的说法:
本地信任的沙箱 - 本地SWF 注册为受信任的文件 (由用户或安装程序) 被放置在本地信任的 沙箱。系统管理员和 用户也有能力 将本地SWF文件重新分配(移动)到或 来自本地信任的沙箱 关于安全考虑(见 管理用户控件和用户 控制)。已分配的SWF文件 到本地信任的沙箱可以 与任何其他SWF文件进行交互 可以从任何地方加载数据(远程或 本地)。
因此,无论是安装人员还是用户都必须将swf放入本地受信任的沙箱中。
答案 1 :(得分:3)
默认情况下,如果您尝试从file://页面使用它,则ExternalInterface将抛出安全错误#2060。但是,如果您在嵌入时添加<param name="allowscriptaccess" value="always"/>
选项,则应该可以与JavaScript通信。
docs on ExternalInterface在addCallback()和call()的异常文档中引用它。
编辑:在下面的评论中进一步讨论后,似乎虽然这对我在Mac上有用,但它在Windows上无效。 Erik的回答提供了有关失败原因的详细信息。
答案 2 :(得分:-1)
作为替代方案,您是否考虑过使用Air并利用'FileSystem'?
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html