【问题标题】:Does ExternalInterface work on the file: protocol?ExternalInterface 是否适用于文件:协议?
【发布时间】:2011-07-11 14:59:29
【问题描述】:

任何人都可以确认 ExternalInterface 在file: 协议上工作,或者指出一些文档说它不会?

【问题讨论】:

  • 题外话:我使用 XAMPP “本地”调试闪存
  • 这不是用于测试的,它是用于将在 cd 上运行的代码
  • 好吧,这搞砸了,navigateToURL 上的文档似乎建议我应该将 ExternalInterface 用于内部内容 WTF?
  • 嗯,他们一定意味着我们应该为本地受信任的沙箱使用 ExternalInterface..

标签: actionscript-3 flash actionscript file-uri


【解决方案1】:

作为替代方案,您是否考虑过使用 Air 并利用“文件系统”?

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html

【讨论】:

    【解决方案2】:

    默认情况下,如果您尝试从 file:// 页面使用 ExternalInterface,它将引发安全错误 #2060。但是,如果您将 <param name="allowscriptaccess" value="always"/> 选项添加到您的嵌入,它应该能够与 JavaScript 对话。

    docs on ExternalInterface 在 addCallback() 和 call() 的异常文档中引用了这个。

    编辑:在下面的 cmets 中进一步讨论后,看来,虽然这在 Mac 上适用于我,但在 Windows 上不起作用。 Erik 的回答详细说明了失败的原因。

    【讨论】:

    • 所以使用<param name="allowscriptaccess" value="always"/> 可以防止安全错误?
    • 是的,根据我的经验。文档引用了这个,以及使用flash.system.Security.allowDomain(sourceDomain)(用链接更新了我的答案,跳到 addCallback 方法)。
    • 所以你在动作脚本中使用了flash.system.Security.allowDomain(sourceDomain),以便在file:上工作?
    • 在使用file: 协议时,您对sourceDomain 使用了什么顺便说一句?
    • 啊...我在 Mac 上进行测试。我启动了 Windows VM,我看到了您所看到的:错误 #2060。
    【解决方案3】:

    开始看起来这行不通了。this page 说:

    脚本之间的任一方向 本地 HTML 文件和本地 SWF 文件——例如,使用 ExternalInterface 类——要求 HTML 文件和 SWF 文件 参与当地值得信赖的 沙盒。这是因为当地 浏览器的安全模型不同 从 Flash Player 本地安全 型号。

    这就是它对本地可信沙箱的描述:

    本地受信任的沙盒--本地 SWF 注册为受信任的文件 (由用户或安装程序) 被放置在本地信任的 沙盒。系统管理员和 用户也有能力 将本地 SWF 文件重新分配(移动)到或 从基于本地受信任的沙箱 关于安全考虑(见 管理用户控制和用户 控制)。分配的 SWF 文件 到本地信任的沙箱可以 与任何其他 SWF 文件交互并 可以从任何地方加载数据(远程或 本地)。

    因此,安装程序或用户都必须将 swf 放入本地受信任的沙箱中。..

    【讨论】:

    • 注意:~hack 提到了here
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2020-09-04
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多