2012-07-20 60 views
3

我已經實現了的JavaScript SDK在我的網站在Facebook上的JavaScript SDK網站:最佳使用Facebook的SDK + HTML5與XFBML

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'YOUR_APP_ID', // App ID 
     channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    // Additional initialization code here 
    }; 

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

但在類似插件代碼段爲規定的它給了我這個代碼:

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=YOUR_APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

我的第一個問題:什麼是更好的代碼?他們有什麼不同?

我的第二個問題是關於按鈕或評論框的HTML5或XFBML呈現。我運行一個WordPress的博客,這不是HTML5。

我的第二個問題:什麼是最好的代碼,HTML5或XFBML?而另一個的速度更快,或者比另一個支持的速度更快?

謝謝!

+0

看這裏:http://stackoverflow.com/a/11206747/601466 – borisdiakur 2012-07-20 09:44:21

回答

5

第一個解決方案異步加載Facebook JavaScript庫,如果排列正確,將爲訪問者提供更快的頁面呈現。將<div id=fb-root">window.fbAsyncInit定義放在<body>標籤後面,以便在Facebook JavaScript庫加載之前預先定義它們。

相比之下,function(d)定義應該位於頁面的底部,因此</body>標記會延遲Facebook庫的加載,直到上面加載了所有其他頁面元素爲止。這確保您自己的顯着頁面元素首先呈現。

function(d,s,id)代碼片段看起來更新(更多參數),但我不認爲它像第一個那樣異步加載。因此,暫時我會使用舊的(第一個)版本,直到Facebook發佈新版function(d,s,id)代碼片段的異步版本。


關於第二個問題,我會繼續使用XFBML代碼執行,直到極少數網站訪客使用IE7或IE8任何更長的時間。一旦他們轉向IE9 +,那麼我會切換到HTML5實現,這對於搜索引擎,屏幕閱讀器和刮板有很多語義優勢。

+0

嗨馬克!謝謝你的偉大答案。我想知道是否需要用關閉代碼的第一部分,並將代碼的最後部分放在。請務必在影響頁面上呈現元素的JavaScript之後找到Facebook庫加載函數'function(d)',因爲您希望首先對這些元素執行操作,但在任何異步lib加載之前(例如Google Analytics)不會影響頁面渲染。 – 2012-08-10 07:30:23