【问题标题】:Facebook "FB.Canvas.getPageInfo", how to use it properlyFacebook“FB.Canvas.getPageInfo”,如何正确使用
【发布时间】:2011-12-27 21:57:55
【问题描述】:

我需要帮助弄清楚如何正确使用 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");
}

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

顺便说一句,这些函数都在我的异步初始化和 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>

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

【问题讨论】:

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


    【解决方案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;
    });
    

    【讨论】:

    • 例如,我的意思是获取当前的 scrollTop 值,并将其设置为变量以在另一个 jquery 函数中使用...
    • facebook 对象不是 jQuery 对象。此外,您的 javascript 代码函数 getFbCanvasInfo() 不会返回任何内容。由于它们是异步调用,您应该使用更像这样的东西:
    • 好的,谢谢。最终,我试图获取 scrollTop 的值并将其添加到静态值(100px),如下所示:jsfiddle.net/b3HHv - 在这种情况下,它是一个花式调用,但是当我将 FB.Canvas 代码放入其中时.each(),它在控制台中返回“FB 未定义”...再次感谢您的帮助!
    • 嘿 DMCSS,我可以请你帮助我吗,可能是通过 PayPal 捐款?我需要弄清楚为什么您的示例 (jsfiddle.net/LntkP) 有效,但在 .each() 中却没有,就像这样 (jsfiddle.net/KNNAP)。它返回一个 Uncaught ReferenceError: FB is not defined... 如果您有兴趣,请在 luke[at]filmdemic.com 上给我发电子邮件。谢谢!
    • 我已经回答了你原来的问题。如果你不愿意表现得很好,我不会再回答你的其他问题了!!
    猜你喜欢
    • 2013-03-05
    • 2011-07-21
    • 1970-01-01
    • 2012-08-25
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多