FB.Canvas.setAutoGrow()无效并创建高度变化的无限循环

时间:2014-07-21 16:53:39

标签: javascript facebook canvas facebook-javascript-sdk

我无法让FB.Canvas.setAutoGrow()工作。或者,可能,它的工作,它没有做我期待的事情?

我已经尝试设置我的Facebook应用程序画布高度固定并关闭.setAutoGrow()上的Facebook文档的固定画布高度。我正在查看此问题的一些帖子和解决方案,包括尝试此线程中的所有解决方案 Facebook Canvas APP (Iframed) Auto-Height Resize。我也在Facebook博客上试过这个解决方案:https://developers.facebook.com/blog/post/549/。我现在正在尝试这个网站建议http://atomiku.com/2012/02/remove-scrollbars-and-get-your-facebook-app-canvas-iframe-to-autosize-to-height-fb-canvas-setautogrow/#comment-31741,这似乎在我的脑海中产生了更多“理论上正确”的意义,唱上了onload() - 我认为只会发生一次。

我拥有的: 我的Facebook应用程序基本上只是重定向到带有母版页的asp.net页面,并且该页面没什么特别的(普通网站),除了它是动态创建的,因此每个页面的高度在页面之间变化。它在没有fb.canvas.setautogrow()的情况下工作正常,但在高度上的每个页面上都有滚动条。这使它看起来像一个框架。但是,如果我使用{overflow:hidden;}删除滚动条,则页面将被截断。滚动条被删除,如果页面很小,它看起来很好。一旦你到达一个比默认值800px更长的页面,它就会截断它。我的身体风格设定为高度:100%;

我的代码: 这是我的代码,导致Facebook的高度无限重新调整。你真的可以滚动到Facebook的底部,并且页面在无限循环中越来越长,越来越长。

    <div id="fb-root"></div>
    <script src="https://connect.facebook.net/en_US/all.js"></script>
    <script type="text/javascript">
     window.fbAsyncInit = function () {
         FB.init({
             appId: '1234', //Your facebook APP here
             cookie: true // enable cookies to allow the server to access the session
         });
     }

     window.onload = function () {
         FB.Canvas.setAutoGrow(91);
     }
    </script>

如果这是一个“明显”的问题,或者答案就在那里我无法找到它,我很抱歉。我一直在寻找两天。

在此先感谢您的帮助。

{编辑:好的,这个问题似乎只发生在IE中。起初我没有意识到这一点。我正在使用IE 11。}

1 个答案:

答案 0 :(得分:2)

正确的代码:

window.fbAsyncInit = function () {
    FB.init({
        appId: '1234', //Your facebook APP here
        cookie: true // enable cookies to allow the server to access the session
    });

    FB.Canvas.setAutoGrow();
}

初始化JavaScript SDK后,您需要调用FB函数。你也不需要setAutoGrow的参数,我认为默认值是100毫秒(所以每100毫秒检查高度变化)。

此外,请始终使用异步版本,与此处说明的完全相同:https://developers.facebook.com/docs/javascript/quickstart/v2.0

我不认为这会解决你的循环问题。如果您的内容一直变大,可能会出现CSS问题。高度设定为100%?我曾经遇到过这个问题。

另一个问题可能是重定向,删除重定向并尝试在页面标签设置中设置的URL上使用它(使用正确的代码)。

编辑:所以我的100%身高的猜测确实解决了第一个问题,现在您可以检查内容是否与position:absolute一起放置。如果您只使用绝对位置的内容,Facebook不会增加高度。