跨域ExternalInterface"NPObject上的错误调用方法"

Jos*_*osh 19 javascript flash actionscript-2 externalinterface

我试图通过跨域的ExternalInterface启​​用Javascript和Flash之间的通信.当Javascript与SWF位于同一域时,它可以很好地工作.但在一种情况下,HTML驻留在域A上,javascript和flash都驻留在域B上.我已经完成了以下所有操作:

  • embed标签有allowScriptAccess="always"(并且对象具有作为参数的对象)
  • 我的SWF文件的actionscipt有 Security.allowDomain("*")
  • 我的SWF也打来电话 Security.allowInsecureDomain("*")
  • 域A和域B都有一个/crossdomain.xml文件allow-access-from domain="*"

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

在NPObject上调用方法时出错![插件异常:Actionscript中的错误.使用try/catch块查找错误.]

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

Geo*_*off 20

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

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文件,这是非常糟糕的做法)