编程语言
首页 > 编程语言> > ExternalInterface.call有效,但javascript无法访问actionscript回调?

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.swfhttp://example.com/a.html上加载
> SWF和HTML的域不同.

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

如果param allowScriptAccess设置为“always”,Flash可以与JavaScript通信

例如,http://swf.example.com/a.swfhttp://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