ExternalInterface.call有效,但javascript无法访问actionscript回调?
作者:互联网
在网页中,javascript& as3的设置如下:
> Javascript在页面中加载swf.
> swf调用ExternalInterface.call(“javascriptFunctionName”,“”);
> Javascript的javascriptFunctionName()使用由ExternalInterface.addCallback设置的actionscript函数
目前,javascriptFunctionName()首先检查它是否可以访问actionscript的回调函数.
这项检查是否必要?或者actionscript设法调用javascript函数的事实是否表明授予了访问权限?
编辑:更具体地说,我的代码有效.我担心它可能会放在具有不同权限的第三方页面中.
解决方法:
对于具有不同安全要求的JavaScript / Flash通信,有几种不同的方案.
> SWF和HTML的协议和域匹配.
JavaScript可以与Flash通信.
如果param 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通信.
如果param 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通信.
如果param allowScriptAccess设置为“always”,Flash可以与JavaScript通信
例如,https://example.com/a.swf加载https://example.com/a.swf
要回答您是否有必要检查通信是否正常的问题,如果您想立即显示错误消息,答案可能是肯定的.无论哪种方式,我都会在双方的每次通话中使用try..catch.
标签:javascript,actionscript,actionscript-3 来源: https://codeday.me/bug/20190718/1492498.html