javascript - 使用注入(inject) JS 的 ExternalInterface.call() 调用 AS 函数

标签 javascript actionscript-3 facebook-javascript-sdk

如何从已使用 ExternalInterface.call() 注入(inject)页面的 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

}

评论

标有<= ERROR的行在 Chrome 中抛出以下内容:

Uncaught Error: Error calling method on NPObject.

在 FF 中:

uncaught exception: Error in Actionscript. Use a try/catch block to find error.

我认为问题在于 ExternalInterface.addCallback()ob.callASFunction() 之前未在 Flash 对象上附加监听器被称为。

或者,也许我遗漏了什么。

如有任何指点,我们将不胜感激。

最佳答案

有两种可能的修复方法。

不要强制调用 AS 方法的参数

public function myASFunction(vars:String = null){ ... }

始终将变量传递给方法

ob.callASFunction(response.status); /* <= FIX */

有点捂脸的时刻。 :{D


注意:我已经编辑了我的答案以反射(reflect) JS 修复,但不是 AS 修复。

关于javascript - 使用注入(inject) JS 的 ExternalInterface.call() 调用 AS 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13630297/

相关文章:

actionscript-3 - 在 Android 和 iOS 上使用 Adob​​e AIR for Mobile 防止屏幕超时

actionscript-3 - 如何在 Air Action Script 应用程序和 Node.js 服务器之间进行通信

javascript - 当从 Canvas 应用程序调用 FB.login 时,为什么 Facebook 突然从使用弹出式身份验证改为使用灯箱身份验证?

javascript - 从 Facebook api 获取帖子

javascript - 如何使用 defaultProps 定义 React 函数组件的接口(interface)而不引发丢失类型错误?

javascript - 如何让 GraphQL 枚举解析字符串

javascript - 选中任何复选框或填充任何输入框的简单方法

actionscript-3 - 是否有一个AS3库来确定大多数mp3音乐文件的每分钟节拍(bpm)?

Facebook PHP SDK $uid = $facebook->getUser() 始终返回 0

javascript - 如何替换javascript中两个字符之间的字符串?