0

我需要帮助弄清楚如何正确使用FB.Canvas.getPageInfo来自 Facebook 的 javascript sdk:

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");
}

我知道这是不对的,我在这里遗漏了一些东西。

顺便说一句,这些函数都在我的 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>

非常感谢任何有建议/专业知识的人!谢谢!

4

1 回答 1

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;
});
于 2011-12-28T06:37:52.970 回答