2012 년 1 월 4 일 업데이트
방금 (예 : FB-의존하는 방법을 호출 할 수 없습니다 것 같다 FB.getAuthResponse()
직후) FB.init()
전 등이 아니라, FB.init()
지금 비동기 것 같다. 코드를 FB.getLoginStatus()
응답 으로 래핑 하면 API가 완전히 준비되었을 때 감지하는 트릭을 수행하는 것 같습니다.
window.fbAsyncInit = function() {
FB.init({
//...
});
FB.getLoginStatus(function(response){
runFbInitCriticalCode();
});
};
또는 fbEnsureInit()
아래에서 구현을 사용 하는 경우 :
window.fbAsyncInit = function() {
FB.init({
//...
});
FB.getLoginStatus(function(response){
fbApiInit = true;
});
};
원본 게시물 :
FB가 초기화 될 때 스크립트를 실행하려면 내부에 콜백 함수를 넣을 수 있습니다 fbAsyncInit
.
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $conf['fb']['appid']; ?>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Canvas.setAutoResize();
runFbInitCriticalCode(); //function that contains FB init critical code
};
FB.ensureInit의 정확한 교체를 원한다면 공식적인 교체가 없기 때문에 직접 작성해야합니다 (큰 실수 imo). 내가 사용하는 것은 다음과 같습니다.
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $conf['fb']['appid']; ?>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Canvas.setAutoResize();
fbApiInit = true; //init flag
};
function fbEnsureInit(callback) {
if(!window.fbApiInit) {
setTimeout(function() {fbEnsureInit(callback);}, 50);
} else {
if(callback) {
callback();
}
}
}
용법:
fbEnsureInit(function() {
console.log("this will be run once FB is initialized");
});