2010-09-10 57 views
1

我正在使用jquery在我的頁面中實現各種東西,其中包括顯示和隱藏div元素。在facebook上使用jquery JS SDk

現在我也在主頁面上有Facebook JS SDK來檢查用戶是否已經登出Facebook並進行圖形API調用。

問題是,有時需要一段時間才能從Facebook來響應,而在這段時間內,用戶可以看到jQuery在$ .ready中隱藏的div元素。

任何想法如何更好地?

回答

2

好吧..所以我終於能夠解決問題調用jQuery代碼。你應該異步加載的FB的Javascript SDK如下圖所示

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({appId: 'your app id', status: true, cookie: true, 
      xfbml: true}); 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

有關詳細信息,請參閱http://developers.facebook.com/docs/reference/javascript/

一件事我注意到,包含FB對象的所有方法,如FB.api等應在與FB.init相同的閉包中,或者FB對象未定義。

0

我認爲圖表API調用有一個回調函數,當他們完成。從那裏,而不是$。就緒

+0

好的事情是我想在圖形api調用之前調用我的jquery代碼。問題是圖形API調用導致延遲,我希望我的代碼儘快執行頁面加載。 – shashi 2010-09-12 17:35:04

+0

我明白了。我的錯! 1.你如何開始隱藏的有問題的div? 或 2.加載頁面後,如何調用圖形?所以你要用jquery做什麼,然後開始調用圖表。 沒有一些代碼示例或網頁,它真的很難提供幫助。 – 2010-09-13 13:59:05

0
+0

不,延遲不是需要的。如果您仔細閱讀,我希望在早些時候讓FB發生,基本上在FB JS Sdk開始進行API調用之前。如果我延遲,那麼用戶將在$ .ready()中使用hide()方法看到目前隱藏的元素。我希望我這次更清楚。 – shashi 2010-09-12 17:52:40

1

如果你想有一個更清潔方法,試試這個:

window.fbAsyncInit = function() { 
    FB.init({xfbml: true}); 
}; 

$(function() { 
    $.getScript({url: document.location.protocol + 
    '//connect.facebook.net/en_US/all.js'}); 
} 

插入此代碼內聯的或者在一個單獨的JavaScript文件。

注:

  • 這個例子沒有定義APPID餅乾狀態。你可以將它們添加到fbAsyncInit。
  • 使用JQuery 1.8.2進行測試。
  • 我發現#fb-root div是不必要的。
+2

#fb-root聲稱被用於特定瀏覽器的某些跨域情況,與頻道文件相同。 – 2012-11-27 15:42:50

相關問題