Facebook“FB.Canvas.getPageInfo”,如何正确使用它

时间:2011-12-27 21:57:56

标签: facebook facebook-iframe facebook-canvas facebook-javascript-sdk

我需要帮助弄清楚如何从Facebook的javascript sdk中正确使用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这些函数都在我的async init和FB root之下,如下所示:

<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 个答案:

答案 0 :(得分: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;
});