Javascript 使用ExternalInterface.call()调用AS函数
如何从使用Javascript 使用ExternalInterface.call()调用AS函数,javascript,actionscript-3,facebook-javascript-sdk,Javascript,Actionscript 3,Facebook Javascript Sdk,如何从使用ExternalInterface.call()注入页面的JavaScript调用ActionScript 3中的函数 我试过很多方法,但都没有用 以下是所有必要代码的简化版本: public function myClass() { ExternalInterface.addCallback("callASFunction", myASFunction); var loadJS:XML = <script><![CDATA[
ExternalInterface.call()
注入页面的JavaScript调用ActionScript 3中的函数
我试过很多方法,但都没有用
以下是所有必要代码的简化版本:
public function myClass() {
ExternalInterface.addCallback("callASFunction", myASFunction);
var loadJS:XML =
<script><![CDATA[
function(oid){
ob = document.getElementById(oid);
if (!window.FB) { /* Include FB JS SDK */ }
window.fbAsyncInit = function() {
FB.init({ ... });
FB.getLoginStatus(function(response) {
/* ob.callASFunction(); <= ERROR */
ob.callASFunction(response.status); /* <= FIX */
});
}
}
]]></script>
// Inject the JS into the page
ExternalInterface.call(loadJS, ExternalInterface.objectID);
}
public function myASFunction(vars:String){
// Do great things
}
在FF中:
uncaught exception: Error in Actionscript. Use a try/catch block to find error.
我认为问题在于ExternalInterface.addCallback()
在调用ob.callASFunction()
之前没有在Flash对象上附加侦听器
或者,也许我遗漏了什么
任何提示都将不胜感激。对此有两种可能的修复方法 不要强制调用为方法的参数
public function myASFunction(vars:String = null){ ... }
ob.callASFunction(response.status); /* <= FIX */
或
始终将变量传递给方法
public function myASFunction(vars:String = null){ ... }
ob.callASFunction(response.status); /* <= FIX */
ob.callASFunction(response.status)/*