Facebook App iFrame - 使用FB.Canvas.setSize();和FB.Canvas.setAutoGrow();

时间:2011-10-06 16:59:13

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

我有一个使用Javascript SDK的应用,并且正在通过FB.Canvas.setSize();初始确定高度。这工作正常:

<div id="fb-root"></div>
<script>
              window.fbAsyncInit = function() {
                FB.init({
                  appId  : '223615011031939',
                  status : true, // check login status
                  cookie : true, // enable cookies to allow the server to access the session
                  xfbml  : true,  // parse XFBML
                  // channelUrl  : 'http://www.yourdomain.com/channel.html', // Custom Channel URL
                  oauth : true //enables OAuth 2.0
                });

                FB.Canvas.setSize();

              };

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

但是说页面上的内容会扩展,使得高度大于init之后设置的iFrame大小。我尝试使用FB.Canvas.setAutoGrow();通过它传递的各种参数,但它会给我一个刷新循环,并且每次都会将高度扩展一点。

所以我的问题是,如何使setAutoGrow函数适当地工作,仅在内容增长而不是按设定的时间间隔调整iFrame的大小?如果它只能按设定的间隔进行,则仅在内容实际增长时刷新。

提前再次感谢!

1 个答案:

答案 0 :(得分:0)

参考此页:

https://developers.facebook.com/docs/reference/javascript/FB.Canvas.setAutoGrow/

“如果你知道你的内容会改变大小,但你不知道什么时候这个功能很有用。会有一点延迟,所以如果你知道你的内容何时改变大小,你应该自己调用setSize(并保存)用户的CPU周期)。“

所以,如果你有一些增加高度的javascript函数你可以调用setSize方法,否则setAutoGrow并指定更长或更短的间隔