FB.Canvas.setSize();更改页面时不起作用

时间:2012-10-25 22:19:23

标签: javascript facebook iframe tabs facebook-page

我有一个包含多个页面的facebook标签。在第一页上一切正常,iframe完美调整大小,但在内容小于第一页的第二页上,iframe不会移动,它与第一页保持相同的高度。起初它也停留在页面的底部,但FB.Canvas.scrollTo(0,0);修好了。我尝试使用特定大小调用setSize,但没有任何效果。还尝试了大部分解决方案,但没有任何效果。

以下是我在关闭正文之前在每个页面上调用的代码

<script type="text/javascript">
window.fbAsyncInit = function() {
    <cfif structKeyExists(cgi,'https') AND cgi.https IS 'ON'>
    FB._https = true;
    </cfif>
    FB.init({
        appId   : '<cfoutput>#appId#</cfoutput>',
        cookie  : true, // enable cookies to allow the server to access the session
        oauth     : true, // OAuth 2.0
        status  : true, // check login status
        xfbml   : true // parse XFBML
    });

    FB.getLoginStatus(function(response) {
        // user is connected but we don't have access to his province
        if(typeof response.status == 'string' && response.status == 'connected') {
            $('#erreurProvinceFB').css('display', 'block');
            $('.fb_iframe_widget').css('display', 'none');
            $('.sepOU').html('&nbsp;');
        }
    });

    FB.Event.subscribe('auth.login', function(response) {
        <!--- met en post le nouveau signedRequest car l'ancien qui est en session n'est plus valide et que
        facbook ne renvoie pas un nouveau acces token si le tab est juste rafraichie et non reloader au complet. --->
        $('#signed_request').val(response['authResponse']['signedRequest']);
        $('#loginSignedRequest').submit();
    });
    FB.Canvas.setSize({ width: 520, height: 500 });
    //FB.Canvas.setSize();
    FB.Canvas.setAutoGrow();
    FB.Canvas.scrollTo(0,0);
    $("body").css("overflow", "hidden");
};

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

1 个答案:

答案 0 :(得分:0)

到目前为止,这种组合对我来说效果很好:

<body style="overflow: hidden;">

...

<script>
window.fbAsyncInit = function() {
    FB.init({
        appId      : '*ID*', // App ID
        channelUrl : '/channel.php', // Channel File
        status     : false, // check login status
        cookie     : true, // enable cookies to allow the server to access the session
        xfbml      : true  // parse XFBML
    });

    if ( window.location.protocol == 'https:' ) {
        FB._https = true;
    }

    FB.Canvas.setAutoGrow();
};
</script>

确保您的FB App ID正确无误。