2012-06-28 63 views
0

當試圖使用Facebook JS SDK時,我一直運行到錯誤FB undefined。 當我通過IE瀏覽器上的JavaScript調試器觀察它時,它會在頁面加載過程中正確運行,最後它只是未定義,並且沒有訂閱的事件觸發。 目標:使頁面標籤刷新最頂層頁面,以通過粉絲大門。Facebook Javascript SDK FB未定義

關於我在這裏失蹤的任何想法?

代碼:

<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)); 

加載SDK的兩個JavaScript塊都非常相似。您的JavaScript使用:

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

加載SDK。如記錄由FB的最新版本使用:

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

你的版本增加了源引用通過追加到HEAD HTML標記加載JavaScript的FB。最新版本通過查找第一個SCRIPT參考並在該參考之前插入FB參考來實現此目的。

也許你的問題是由這兩種方法之間的細微差異造成的。要排除這種

一種方法是暫時硬編碼的JavaScript FB的裝載同步通過將以下HTML到您的網頁的標題:

<head> 
<script type="text/javascript" src="http://connect.facebook.net/en_us/all.js"></script> 
. 
. 
. 
</head> 
相關問題