1

我有很多社交按鈕,如this。很多意味着超過50個按鈕,因爲該頁面上的每個帖子都有自己的按鈕。具有快速加載的多個社交按鈕?

所以,也許我會讓頁面變小,文章減少,但這不是主要原因,也不是我正在尋找的。

我想知道我怎樣才能使按鈕快..

  1. 使用XFBML? IFRAME? HTML5?
  2. 如何讓所有人都能從一個腳本運行而不重複?
  3. 您是否建議在用戶向下滾動時加載其餘按鈕?
  4. 您是否建議使用AddThis或Sharrre這樣的服務?
  5. 如何使所有JS加載異步?
  6. 其他提示?

謝謝!

回答

1
  1. 你真的無法控制任何外部插件的性能。
  2. 您可以生成每個按鈕div的數組,然後將它們寫入到所需的位置。
  3. 我建議不要同時加載它們,你可以用setTimeout來抵消每一個,「我會建議每個200ms」。
  4. 沒有按照第三方的建議,像按鈕工作正常。
  5. 異步,請參考http://developers.facebook.com/docs/reference/javascript/
  6. 沒有其他建議。

異步樣本。


<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> 
+0

爲什麼不同時加載所有的人?它不是更快嗎? – tomastsc 2012-08-08 13:17:44

+0

類似的按鈕被設計爲在頁面上單獨飛行,Facebook沒有將其設計成在一個頁面上具有100個按鈕,即使只有50ms,也需要做某種偏移,因此功能不會彼此超越,或者導致隨機錯誤。 – 2012-08-08 14:17:53

+0

我只加載每頁20個,並且只在頁面完全加載並加載異步js sdk後呈現它們。我從循環中將按鈕寫入dom,並使用settimeout和xfbml.parse來渲染按鈕。我的抵消是110ms。用戶不會登陸我的頁面並計數按鈕,因此他們甚至不會注意到按鈕在頁面上呈現,並且它不會在瀏覽器之後拖垮,因爲一次只渲染一個而不是100個。 – 2012-08-08 14:20:56