调整facebook iframe的大小以适应更小的内容?

时间:2011-09-09 10:29:52

标签: javascript html facebook iframe

从我的研究来看,这似乎是一个重新出现的问题。我正在使用以下代码来调整iframe的大小,它目前正常工作......即调整iframe的大小以适应更大的内容,但它不会再缩回!

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    /* Init fb Resize window */
    FB.Canvas.setAutoResize(7);
    FB.init({
        appId:'<?php echo Yii::app()->params['fbAppId']; ?>',
            status: true,
            cookie: true,
            xfbml: true
    });
  };
</script>   

代码位于html文件的最末端,在结束正文标记之前。

3 个答案:

答案 0 :(得分:0)

在致电 FB.init()

之前调用 FB.Canvas.setAutoResize(7); 是不合逻辑的

此外,您不应在 window.fbAsyncInit

中调用 FB.Canvas.setAutoResize(7);

这是一个恰当的例子

window.fbAsyncInit = function() {
    FB.init({
        appId  : js_fb_app_id,
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml  : true,  // parse XFBML
        oauth   : true          
    });
};
$(document).ready(function(){
    FB.Canvas.setAutoResize();
});

使用jQuery。这样,您可以确保在加载DOM时调整页面大小,而不是在此之前。这样您就可以将代码放在页面的任何位置。

FB.Canvas.setAutoResize 设置为700毫秒。你有什么特别的理由吗?默认值为100毫秒

答案 1 :(得分:0)

最简单的方法是在页面完全加载后调用setSize(),如下所示:

<script type='text/javascript'>
window.onload=function() {
  FB.Canvas.setSize({width:760,height:document.body.offsetHeight});
}
</script>

除非您将SDK用于其他内容,否则实际上并不需要FB.init。

答案 2 :(得分:0)

我的https://fb.pienternet.be/overview上的应用程序在几个星期内面临完全相同的问题 - 尝试了很多东西,但没有一个工作..使用setTimeout,手动使用setSize,新的setAutoGrow,它们的组合......当在iframe中从长页面导航到短页面时,以及从短页面到长页面导航时都会发生这种情况。

对我来说,使用父URI导航到页面是什么意思;例如apps.facebook.com/pienternet/detail/5 ...我想这是SDK中的一个错误,也会在Facebook错误跟踪平台上发布。

两个屏幕截图清楚地说明了这一点: