facebook javascript SDK:FB.Canvas.setAutoResize iFrame不能正常工作?

z3c*_*cko 10 javascript facebook

我们使用ruby/rails和facebooker(iframe应用程序)构建了一个facebook应用程序,目前仍然使用FB.Canvas.setAutoResize,在某些情况下似乎失败了.使用来自facebook developer docs的示例(请参阅http://developers.facebook.com/docs/reference/javascript/).一旦你进入一个高于800px的页面,autoresize就会失败 - 所以说,只要画布变大,它就会起作用,而不是当它变小时.任何人都有线索或解决方法吗?

这是调整大小的代码片段

<div id="fb-root" style="width:1px;height:1px;position:absolute;"></div> 
<script type="text/javascript"> 
  window.fbAsyncInit = function() {
    FB.init({appId: '126342024064822', status: true, cookie: true, xfbml: true});
    FB.Canvas.setAutoResize(true,100);
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
Run Code Online (Sandbox Code Playgroud)

我非常感谢任何评论或提示,因为我现在已经超过一天了.

Bre*_*lli 12

要确保的一些关键事项在应用程序设置中设置:

  1. 画布设置 - >渲染方法= iFrame
  2. 画布设置 - > iFrame Size =可调整大小
  3. 迁移 - >新SDK =已启用

接下来通过添加超时来调整代码(250似乎效果最好,但您可能想要进行实验).我在FF3.6和IE7 +中测试了这个.在IE中,有一个垂直滚动条的瞬间闪烁,我仍然试图修复.

<div id="fb-root"></div> 
<script type="text/javascript"> 
  window.fbAsyncInit = function() {
    FB.init({appId: '12345678910', status: true, cookie: true, xfbml: true});
  window.setTimeout(function() {
    FB.Canvas.setAutoResize();
  }, 250);
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
Run Code Online (Sandbox Code Playgroud)


小智 7

解决方案很简单!除了放置FB.Canvas.setAutoResize(),
你必须将你的身体改为体型="溢出:隐藏"

这个对我有用!现在ie8还可以!!