gpt4 book ai didi

javascript - 跨域外部接口(interface) "Error calling method on NPObject"

转载 作者:行者123 更新时间:2023-12-03 12:48:24 25 4
gpt4 key购买 nike

我正在尝试通过跨域的 ExternalInterface 启用 Javascript 和 Flash 之间的通信。当 Javascript 位于与 SWF 相同的域中时,它的效果很好。但在一种情况下,HTML 位于域 A 上,javascript 和 flash 都位于域 B 上。我已完成以下所有操作:

  • 嵌入标签有 allowScriptAccess="always" (并且对象将其作为参数)
  • 我的 SWF 文件的 actioncipt 有 Security.allowDomain("*")
  • 我的 SWF 也调用 Security.allowInsecureDomain("*")
  • 域 A 和域 B 都有 /crossdomain.xml具有 allow-access-from domain="*" 的文件

  • SWF 能够在页面上调用 javascript,但是当我使用 Javascript 调用 ExternalInterface 公开的函数时,我得到

    Error calling method on NPObject! [plugin exception: Error in Actionscript. Use a try/catch block to find error.]



    这是 ActionScript 2,所以 ExternalInterface.marshallExceptions不可用。

    最佳答案

    你应该只需要两件事就可以了:

    1) allowscriptaccess=always将允许您的 swf 将内容发送到页面

    2) System.security.allowDomain("yourhtmldomain.com");
    请注意,它是 System.security.allowDomain()在 AS2 中 - 它与 AS3 或您上面写的不同。

    上面的数字 2 允许 domainA 上的 html 页面调用 domainB 上 swf 中的内容。

    你的 js 所在的域在这里无关紧要,因为浏览器将它嵌入到 domainA 中,脚本在 domainA 中执行。

    crossdomain.xml 主要仅用于加载远程文件,您没有这样做,因此您可以根据需要将其删除。 (而且您可能不希望有一个带有 allow="*" 的 crossdomain.xml 文件位于您的主域上,这是非常糟糕的做法)

    关于javascript - 跨域外部接口(interface) "Error calling method on NPObject",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1038668/

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