设置Facebook个人资料页面的iframe选项卡的高度

Ahm*_*mad 19 facebook facebook-iframe

据我们所知,Facebook推出了iframe Tabs for Pages.我开发了一个应用程序,并在个人资料页面中添加了应用程序的选项卡,根据更新"iframe Tabs for Pages"在iframe中打开了应用程序选项卡.问题是页面高度未调整,无法删除滚动条以显示没有滚动条的完整页面.我找到的所有解决方案都适用于Application画布页面,但不适用于Application Tab页面.

我们怎么做?

Lan*_*tus 21

这很容易实现.您必须在Facebook集成选项卡中将应用程序设置为IFRAME,并将框架的大小设置为"自动调整大小".

现在,在您的服务器上,您必须在</BODY>标记之前添加以下代码:

<div id="fb-root"></div>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" charset="utf-8">
    FB.Canvas.setSize();
</script>  
Run Code Online (Sandbox Code Playgroud)

这将自动调整大小.如果您将溢出:隐藏添加到BODY标记,它也会有所帮助.

  • 仅供参考:我必须使用明确的大小:"FB.Canvas.setSize({width:520,height:620});".不要忘记阅读文档:https://developers.facebook.com/docs/reference/javascript/FB.Canvas.setSize/ (2认同)

dis*_*sco 14

以下指南帮助我解决了同样的问题:

http://www.hyperarts.com/blog/facebook-iframe-apps-getting-rid-of-scrollbars/

简而言之,请执行以下操作:

  • 将"IFrame大小"更改为"自动调整大小"

  • 加载Facebook的Javascript SDK

</body>索引页面的标记之前添加以下代码:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : 'YOUR-APP-ID-HERE',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
</script>
Run Code Online (Sandbox Code Playgroud)
  • 使用FB.Canvas.setSize()

将以下代码放在</head>标记之前:

<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setSize();
}
// Do things that will sometimes call sizeChangeCallback()
function sizeChangeCallback() {
FB.Canvas.setSize();
}
</script>
Run Code Online (Sandbox Code Playgroud)

应该这样做,希望它有所帮助!


Ale*_*lde 9

facebook最近改变了一些东西,现在你的标签文件也需要这个fb.init方法.否则调整大小不会工作.所以也请在标签页中使用它

    <script type="text/javascript" charset="utf-8">
window.fbAsyncInit = function() 
{
    FB.init({ appId: 'YOUR APP ID', 
    status: true, 
    cookie: true,
    xfbml: true,
    oauth: true});

    FB.Canvas.setAutoResize();
    FB.Canvas.setAutoGrow();
}
    </script>
Run Code Online (Sandbox Code Playgroud)

  • setAutoGrow是setAutoResize的新名称.两者都没有必要. (5认同)
  • 这很有魅力.我讨厌Facebook不断变换的东西,让过时的文档在野外漫游. (2认同)

42d*_*Ltd 6

更新了每个遇到问题的代码:

1)将您的应用程序"Canvas Height"设置为"Fluid".

2)在结束<body>标记之前复制+粘贴以下代码.

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
  // Called when FB SDK has been loaded
  window.fbAsyncInit = function () {
    // Initialize the FB javascript SDK
    FB.init({
      appId: '[YOUR APP ID]',
      status: true,
      cookie: true,
      xfbml: true
    });

    // Auto resize FB Canvas
    FB.Canvas.setAutoGrow();
  };

  // Load the FB SDK Asynchronously
  (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));

</script>
Run Code Online (Sandbox Code Playgroud)