2013-08-20 4 views
-1

js sdk로 플래시 - 페이스 북 로그인을위한 간단한 ExternalInterface 메카니즘을 만들었지 만 GetElementById ("flashContent")가 null이기 때문에 플래시 콜백이 실행되지 않습니다 >>> Console.GetElementById가 페이스 북 로그인 용 FlashContent에 대해 null입니다.

어떻게 수정해야합니까? 파이어 폭스 등에서 사용해 보았습니다. 동일한 결과를주었습니다. 버튼을 클릭하면 checklogin js가 호출되지만 프로세스가 완료되고 콜백 플래시를 시도하면 methodE 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]; 
    } 

답변

0

나는이 문제를 해결 솔루션을 발견했습니다. 처음에는 flashContent를 사용하여 id getelementbyid를 설정하려고 시도했지만 제대로 실행되지 않았습니다. 그러나 id = "dua"로 시도 할 때도 weel은 실행되지 않았습니다. 그래서 요소를 검사하여 검사하고 객체가 표시되는 것이 두 번째 ID가 아닌 것을 발견했습니다. 그래서, 나는 ID를주고 getelementbyid로 부른다. 그래서 어떤 브라우저에서든지 테스트해볼 때 잘 동작하지만 IE에서 테스트하려고하면 IE 메소드 제공으로 getelementbyid를 설정해야합니다.

-CMIIW-