-1

我尝试使用 js sdk 为 flash-facebook 登录创建简单的 ExternalInterface 机制,但由于 GetElementById("flashContent") 为空 >>> 控制台说,没有运行对 flash 的回调。

我应该如何修复它?我已经在 Firefox 等中尝试过,并给出了相同的结果。当我单击该按钮时,它会调用 checklogin js,但是当该过程完成并尝试回调 flash 时,GetElementById(...).onLogin 方法不会运行。

编码:

function requestLogin() {                
            FB.login(function(response) {
                if (response.authResponse) {
                    console.log('Welcome!  Fetching your information.... ');
                    FB.api('/me', function(response) {
                    console.log('Good to see you, ' + response.name + '.');
                });
                    document.getElementById('dua').onLogin();                        
                } else {
                    console.log('User cancelled login or did not fully authorize.');
                     document.getElementById('dua').onError();
                }
            });
        }
    </script>
    <div id="flashContent">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="dua" align="middle">
            <param name="movie" value="dua.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#ffffff" />
            <param name="play" value="true" />
            <param name="loop" value="true" />
            <param name="wmode" value="transparent" />
            <param name="scale" value="showall" />
            <param name="menu" value="true" />
            <param name="devicefont" value="false" />
            <param name="salign" value="" />
            <param name="allowScriptAccess" value="always" />
            <!--[if !IE]>-->
            <object id="dua" type="application/x-shockwave-flash" data="dua.swf" width="550" height="400">
                <param name="movie" value="dua.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="transparent" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="always" />
                <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                </a>
                <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </div>

AS3 代码:

import flash.events.DataEvent;
import flash.events.MouseEvent;
flash.system.Security.allowDomain("*");
flash.system.Security.allowInsecureDomain("*");

tombol.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void{
FBconnect();
tombol.removeEventListener(MouseEvent.CLICK, onClick);
}
function FBconnect():void {
    teks.text = "masuk fbconnect";            
        ExternalInterface.call("requestLogin");
    ExternalInterface.addCallback("onLogin", onLogin);
        ExternalInterface.addCallback("onError", onError);
 }

function onError():void {
 teks.text = "onError";
     trace('error');
 }

function logout():void {
      ExternalInterface.call("FB.logout", null);
}

function onLogin():void {
 teks.text = "onlogin";
     trace("FB LOGIN");
     connectUser();
 }

 function connectUser():void {
     teks.text = "connectUser";
     ExternalInterface.addCallback("loadUser", userCallback);
     ExternalInterface.call("connectUser");
   }

 function userCallback(data:Array):void {
  teks.text = "user callback";
      trace("FB USER LOADED");
      var userData:Object = data[0];
  }
4

1 回答 1

0

我找到了解决这个问题的方法。首先,当我尝试使用 flashContent 设置 id getelementbyid 时,它运行不佳。但是当我尝试使用 id="dua" 时,它也没有运行。所以,我用检查元素检查它,我发现正在显示的对象是第二个不包含 id 的对象。所以,我给出一个 id 并在 getelementbyid 中调用它。因此,当我尝试在任何浏览器中测试它时,它运行良好,但是当我尝试在 IE 中测试它时,我必须使用 IE 提供的方法设置 getelementbyid。

-CMIIW-

于 2013-08-23T01:16:18.997 回答