2012-06-28 2 views
0

При попытке использовать SDK Facebook JS я продолжаю работать с ошибкой FB undefined. Когда я просматриваю его через отладчик JavaScript в IE, он работает правильно во время загрузки страницы, а затем в конце он просто неопределен и никаких событий, которые подписаны на огонь. Цель: сделать вкладку страницы обновленной страницей верхнего уровня, чтобы пройти мимо вентилятора.Facebook Javascript SDK FB Undefined

Любые идеи о том, чего я здесь не хватает?

Код:

<div id="fb-root"></div> 
<script> 

    window.fbAsyncInit = function(){ 

FB.init({ 

appId : 'APP CODE INSERTED HERE', 

status : true, // check login status 

cookie : true, // enable cookies to allow the server to access the session 

xfbml : true, // parse XFBML 

channelUrl : 'URL to Channel .ASPX' 

}); 


// Additional initialization code here 

    FB.Event.subscribe('edge.create', 

    function(response){ 

    top.location.href = 'Page to refreshed inserted here'; 
    }); 

}; 

(function(d) 
{ 
var js, id = 'facebook-jssdk'; 
if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 

js.src = "//connect.facebook.net/en_US/all.js"; 

d.getElementsByTagName('head')[0].appendChild(js); 

}(document) 
); 

</script> 

ответ

0

Ваш JavaScript, чтобы загрузить SDK Асинхронный не соответствует тому, что в настоящее время показывает документация Facebook SDK. См. Ниже:

// Load the SDK Asynchronously 
(function(d){ 
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     ref.parentNode.insertBefore(js, ref); 
}(document)); 

Оба блока JavaScript для загрузки SDK очень похожи. Ваш JavaScript использует:

d.getElementsByTagName('head')[0].appendChild(js); 

Для загрузки SDK. Самая последняя версия, как документировано FB использует:

ref = d.getElementsByTagName('script')[0]; 
ref.parentNode.insertBefore(js, ref); 

Ваша версия добавляет ссылку на источник, чтобы загрузить FB JavaScript, присоединяя к ГОЛОВКА HTML тега. Самая последняя версия делает это, найдя первую ссылку SCRIPT и вставив ссылку FB перед этой ссылкой.

Возможно, ваша проблема вызвана тонкими различиями между этими двумя методами.

Один из способов исключить это будут временно жесткий код загрузки FB JavaScript синхронно, помещая следующий HTML в заголовок вашей страницы:

<head> 
<script type="text/javascript" src="http://connect.facebook.net/en_us/all.js"></script> 
. 
. 
. 
</head> 
Смежные вопросы