0

我需要幫助搞清楚如何適當地從Facebook的JavaScript SDK使用FB.Canvas.getPageInfo臉譜「FB.Canvas.getPageInfo」,如何使用它正確

https://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/

我能夠得到的信息和日誌/警報數據:

function getFbCanvasInfo() { 
    FB.Canvas.getPageInfo(function(fbCanvasInfoObject) { 
    console.log(fbCanvasInfoObject); 
    }); 
} 

$("a.GetScrollTest").live("click", function() { 
    getFbCanvasInfo(); 
    return false; 
}); 

但我想不出如何設置數據,然後將其應用到其他元素或功能(即類似下面的東西):

$("a#test-link").each(function() { 
    var fbPosition = getFbCanvasInfo().scrollTop; 
    $(this).append("<em>The scroll top value is " + fbPosition + "px"); 
} 

我知道它不對,我在這裏錯過了一些東西。

BTW這些功能都低於我的異步初始化和FB根,看起來像這樣:

<div id="fb-root"></div> 
<script type="text/javascript">//<!-- 
    window.fbAsyncInit = function() 
     { 
     FB.init({ 
      appId: '223615011031939', 
      status: true, 
      cookie: true, 
      xfbml: true, 
      oauth:true, 
      channelUrl: '[MY PROJECTS CHANNEL URL]' 
     }); 
     var isLoaded = true;FB.Canvas.setSize();FB.Canvas.setAutoGrow(500);    
     }; 

     (function() { 
      var e = document.createElement('script'); 
      e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
      e.async = true; 
      document.getElementById('fb-root').appendChild(e); 
     }()); 

     ;(function($){ 
      $(document).ready(function($){ 
       [THE JQUERY FROM ABOVE HERE] 
      }); 
     })(jQuery); 
    //--></script> 

感謝以下的人誰諮詢/專業知識!謝謝!

回答

1

getPageInfo返回只讀對象。要「設置」的東西,您需要使用文檔中列出的提供的setter函數。其中一個設置畫布的大小是setSize請參閱https://developers.facebook.com/docs/reference/javascript/FB.Canvas.setSize/

此外,您應該清理您的JavaScript,以便使用它們的API的異步特性很好。

$("a.GetScrollTest").live("click", function() { 
    FB.Canvas.getPageInfo(function(fbCanvasInfoObject) { 
     var fbPosition = fbCanvasInfoObject.scrollTop; 
     $(this).append("<em>The scroll top value is " + fbPosition + "px"); 
    }); 
    return false; 
}); 
+0

我的意思是讓例如當前scrollTop的值,並將其設置爲一個變量在另一個jQuery函數使用... – chuuke 2011-12-28 15:31:09

+0

Facebook的對象不是jQuery的對象。你的javascript代碼的函數getFbCanvasInfo()也不會返回任何東西。由於他們是異步呼叫,你應該使用更多的這樣的東西: – DMCS 2011-12-28 16:52:10

+0

好的謝謝。最終,我試圖獲得scrollTop的值並將其添加到靜態值(100px),如下所示:http://jsfiddle.net/b3HHv/ - 在這種情況下,它是一個fancybox調用,但是當我將FB.Canvas代碼放入.each()中,它會在控制檯中返回「FB未定義」...再次感謝您的幫助! – chuuke 2011-12-28 17:10:17