gpt4 book ai didi

javascript - ExternalInterface.call 有效,但 javascript 无法访问 actionscript 回调?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:26 25 4
gpt4 key购买 nike

在网页中,javascript & as3 是这样设置的:

  1. Javascript 在页面中加载 swf。
  2. swf 调用 ExternalInterface.call("javascriptFunctionName", "");
  3. Javascript 的 javascriptFunctionName() 使用由 ExternalInterface.addCallback 设置的 actionscript 函数

目前,javascriptFunctionName() 首先检查它是否有权访问 actionscript 的回调函数。

这个检查有必要吗?还是 actionscript 设法调用 javascript 函数这一事实表明已授予访问权限?

编辑:更具体地说,我的代码有效。我担心它可能会放在具有不同权限的第三方页面中。

最佳答案

JavaScript/Flash 通信有几种不同的场景,具有不同的安全要求。

  • SWF 和 HTML 的协议(protocol)和域匹配。

    JavaScript 可以与 Flash 通信。

    如果参数 allowScriptAccess 设置为 "sameDomain"(默认)或 "always",Flash 可以与 JavaScript 通信。

    例如,http://example.com/a.swf载入 http://example.com/a.html

  • SWF 和 HTML 的域不同。

    如果从 Flash 调用 Security.allowDomain(exactDomain)Security.allowDomain('*'),JavaScript 可以与 Flash 通信。

    如果参数 allowScriptAccess 设置为 "always",Flash 可以与 JavaScript 通信

    例如,http://swf.example.com/a.swf载入 http://example.com/a.html

  • SWF 通过 HTTPS 提供,但 HTML 通过 HTTP 提供。

    如果从 Flash 调用 Security.allowInsecureDomain(exactDomain)Security.allowInsecureDomain('*'),JavaScript 可以与 Flash 通信。

    如果参数 allowScriptAccess 设置为 "always",Flash 可以与 JavaScript 通信

    例如,https://example.com/a.swf载入 http://example.com/a.html

要回答您是否有必要检查通信是否有效的问题,如果您想立即显示错误消息,答案可能是肯定的。无论哪种方式,我都会在双方的每个调用周围使用 try..catch

关于javascript - ExternalInterface.call 有效,但 javascript 无法访问 actionscript 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com