Facebook Canvas API到SetSize完全破碎

时间:2011-12-22 10:09:10

标签: javascript facebook facebook-javascript-sdk

我目前正在尝试解决一个问题,以便我的facebook应用程序正确调整大小,因为它目前在底部被切断(Aka你无法使用滚动条滚动到托管应用程序的底部。)我有花了很多时间试图找出这个问题所以任何帮助将不胜感激。目前我调用FB.Canvas.setSize({height:2000});返回true然而没有任何反应,我仍然无法到达我的应用程序的底部。我甚至尝试按下按钮,但我仍然得到相同的结果。

更新:在尝试了一些想法之后,如果我将Facebook SDK同步加载到我的主页并在那里调用setSize,我就可以使用它。但是当我将画布导航到的不同页面加载Async或Sync时,我仍然没有运气?只是在我的主页上设置大小是行不通的,因为每个页面都有不同的大小。有没有人见过像这样的问题

以下是代码:

window.fbAsyncInit = function() {
  FB.init({
   appId      : 'XXXXXXXXX', // App ID
   cookie     : true, // enable cookies to allow the server to access the session
   oauth      : true, // enable OAuth 2.0
   xfbml      : false  // parse XFBML
  });

  FB.Canvas.setSize({ width: $(document).width(), height: $(document).height() });

  setFriends();
};

(function(d){
  var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
  js = d.createElement('script'); js.id = id; js.async = true;
  js.src = "//connect.facebook.net/en_US/all.js";
  d.getElementsByTagName('head')[0].appendChild(js);
}(document));


$(document).ready(function() {
  if (FB && FB.Canvas) {
    FB.Canvas.setSize({ width: $(document).width(), height: $(document).height() });
  }
});

3 个答案:

答案 0 :(得分:1)

我在为客户创建应用时遇到了类似的问题。我无法让滚动条掉落。终于让那些离开然后和你一样的问题切断了我的应用程序的底部。这是我找到它的论坛帖子的链接。 Facebook改变了一些代码:

而不是FB.Canvas.setSize()现在FB.Canvas.setAutoGrow()

希望它有所帮助。

http://facebook.stackoverflow.com/questions/8559679/remove-horizontal-and-vertical-scrollbar-from-facebook-apps

答案 1 :(得分:0)

我通常在没有任何参数的情况下调用setSize,这似乎对我有用。

window.fbAsyncInit = function() {
FB.Canvas.setSize();
}

您在高级应用设置中将Canvas高度设置为什么?我发现使用“流体”引起的问题,不得不将其设置为“可设置(默认值:800px)”。

答案 2 :(得分:0)

  

我真的希望明确设置大小,因为它不会在页面加载之外发生变化。我不希望Facebook检查每个时间间隔调整大小的额外性能成本,并根据此更改大小。

好的电话。来自http://www.hyperarts.com/blog/facebook-iframe-apps-getting-rid-of-scrollbars/

的建议

要减少用户的CPU周期,您还可以使用setSize函数。

FB.Canvas.setSize

加载Javascript SDK后,可以使用FB.Canvas.setSize()来删除这些滚动条。将以下代码放在索引页上的结束HEAD标记之前:

<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setAutoGrow();
}
// Do things that will sometimes call sizeChangeCallback()
function sizeChangeCallback() {
FB.Canvas.setSize({ width: 520, height: 1400 });
}
</script>

这会告诉Facebook在页面加载后调整iFrame的大小,并在内容大小发生变化时再次调整。

同样,只有将画布高度设置为“可设置”时,这些功能才会起作用。