ExternalInterface.call可以工作,但javascript可以';无法访问actionscript回调?
在网页中,javascript和as3的设置如下:ExternalInterface.call可以工作,但javascript可以';无法访问actionscript回调?,javascript,actionscript-3,actionscript,Javascript,Actionscript 3,Actionscript,在网页中,javascript和as3的设置如下: Javascript在页面中加载swf swf调用ExternalInterface.call(“javascriptFunctionName”,即“”) Javascript的javascriptFunctionName()使用由ExternalInterface.addCallback设置的actionscript函数 当前,javascriptFunctionName()首先检查它是否有权访问actionscript的回调函数 这张支票有
ExternalInterface.call(“javascriptFunctionName”,即“”)代码>
javascriptFunctionName()
使用由ExternalInterface.addCallback设置的actionscript函数javascriptFunctionName()
首先检查它是否有权访问actionscript的回调函数
这张支票有必要吗?或者actionscript设法调用javascript函数的事实是否表明授予了访问权限
编辑:更具体地说,我的代码有效。我担心它可能会被放在具有不同权限的第三方页面中。JS to AS3和AS3 to JS是两种不同的行为,因此仅仅因为它朝一个方向工作,并不意味着它朝相反的方向工作 要允许JS在SWF中调用AS3方法,您需要通过为希望从JS调用的每个AS3方法调用一次来注册每个AS3方法 假设您有这样一个AS3方法:
function myFunction(value:String):void
{
//do something here
}
您首先需要注册它:
//first parameter is name of function to use in JS.
//second parameter is the AS3 function itself.
ExternalInterface.addCallback("myAS3function", myFunction);
然后你可以从JS调用它;例如:
document.getElementById('mySWF').myAS3function("Hello World");
JavaScript/Flash通信有几种不同的场景,具有不同的安全要求
- SWF和HTML匹配的协议和域。
JavaScript可以与Flash通信
如果参数
设置为allowScriptAccess
(默认)或“sameDomain”
,则Flash可以与JavaScript通信 例如,在“always”
- SWF和HTML的域不同。
如果从Flash调用
或Security.allowDomain(exactDomain)
,JavaScript可以与Flash通信 如果参数Security.allowDomain('*')
设置为allowScriptAccess
例如,在“始终”
- SWF通过HTTPS提供,但HTML通过HTTP提供。
如果从Flash调用
或Security.allowInsecureDomain(exactDomain)
,JavaScript可以与Flash通信 如果参数Security.allowInsecureDomain('*')
设置为allowScriptAccess
例如,在“始终”
要回答是否有必要检查通信是否正常工作的问题,如果要立即显示错误消息,答案可能是肯定的。无论哪种方式,我都会使用
try..catch
来处理两边的每个调用。它朝一个方向工作,并不意味着它朝相反的方向工作
不清楚您的意思是它可能编码不正确,或者权限可能不允许它,即使代码是正确的,我的意思是没有正确编码。我帮不了你;这超出了我对JS/浏览器的知识范围。