2010-07-26 5 views
0

페이지에 XFBML 주석 상자를 구현하려고합니다. Firefox 및 Chrome에서 작동하지만 Internet Explorer 8에서는 산발적으로 만 작동합니다.Facebook XFBML 및 Internet Explorer 8 비동기로드의 문제

페이지가 FB.XFBML.parse('fb-stuff');에 도달하면 'FB is undefined'오류가 발생합니다. XFBML을 구문 분석하기 전에 Facebook Connect 스크립트가로드를 완료했는지 확인해야합니까? 이미 fbAsyncInit에 당신을 위해 할 수있는 페이스 북의 초기화를 지시하고 있기 때문에 당신은 자신 fb.xfbml.parse 호출 할 필요는 없습니다

<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId : '117378991625799', 
      status : false, // check login status 
      cookie : false, // enable cookies to allow the server to access the session 
      xfbml : true // parse XFBML 
     }); 
    }; 
    (function() { 
     var e = document.createElement('script'); 
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
     e.async = true; 
     document.getElementById('fb-root').appendChild(e); 
     FB.XFBML.parse('fb-stuff'); 
    }()); 
</script> 

답변

2

. 이것은 주로 초기화 후에 페이지에 새로운 facebook 요소를 추가하고 파싱하고 렌더링하기를 원할 때 유용합니다.

그리고 네, 자바 스크립트 라이브러리가로드 될 때까지 기다려야합니다. 이것이 바로 fbAsyncInit의 전부입니다. 연결 라이브러리에 대한 스크립트 요소를 만들어 해당 익명 함수의 dom에 삽입하지만 브라우저에서 코드를로드하고 평가하는 데 약간의 시간이 걸리므로 FB를 바로 사용할 수 없습니다. 스크립트가로드되고 FB 객체를 사용할 수 있으면 window.fbAsyncInit을 실행하려고 시도하고 필요한 작업을 수행 할 수 있습니다.