1

Firefox 正在向画布添加滚动条,即使主体设置为溢出:隐藏并执行 FB.Canvas.setAutoResize();。每个其他浏览器都会隐藏滚动条。当我从页面中删除所有内容时,滚动条仍然存在。

示例:https ://apps.facebook.com/fbtestapppb/

4

5 回答 5

4

随着 Facebook 时间线的引入,删除滚动条和控制页边距的方式发生了变化。首先(也是最重要的)你的 body padding 和 margin 必须全部设置为零。这可确保所有浏览器处理您的画布设置绝对为零。

根据您在应用程序/页面设置中设置的“页面标签宽度”(520 像素或 810 像素)选项,您需要在以下代码中调整宽度。这个块应该放在页面头部:

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

在 Body 标签下方添加以下代码:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: 'YOUR APP ID', status: true, cookie: true, xfbml: true});
window.fbAsyncInit = function() {
  FB.Canvas.setSize({ width: 520, height: 1000 });
}
</script>

请记住更改“您的应用程序 ID”。宽度:应等于 520 或 810。设置高度:略大于允许溢出的要求。

此方案已在 IE、FF、Safari 和 Chrome 中测试过!

于 2012-04-18T15:58:50.307 回答
1

我将它添加到我的 css 中,它似乎有效:

body {
    margin-top: -20px;
    padding-top: 20px;
}

如果您已经在身体顶部添加了填充,则可能需要向其添加 20px。

我认为这是因为 Firefox 测量身体高度的方式与其他浏览器不同。

在 ff8、chrome16 和 ie9 中测试,没有负面影响。

于 2012-01-17T19:20:08.207 回答
1

我以这种方式解决了这个问题:

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

  window.fbAsyncInit = function() {
        FB.init({
          appId      : app_id, // App ID
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true  // parse XFBML
        });         

       var height_doc = $(document).height()+20; 
       FB.Canvas.setSize({height: height_doc});
  };

它对我有用。我希望有帮助。

于 2012-08-21T10:28:53.140 回答
0

这是画布应用程序和页面选项卡的一个已知问题,并且令人讨厌地存在了很长一段时间。

https://developers.facebook.com/bugs/309917422436936

有些人提到能够使用FB.Canvas.setSize({ width: 700, height: 800 });或类似的东西FB.Canvas.setAutoResize(500);,它解决了这个问题。

您是否也确实在应用程序控制面板中设置了 iframe 自动调整大小选项?

于 2011-10-31T12:12:47.747 回答
0

忘记正文和 html 边距(我的意思是将它们设置为零)。
只需将所有内容(包括页眉和页脚)放入包含单个单元格的表格中。
至少所有浏览器都会同意如何计算表格的高度......

像这样:

 <table id='m_table' width=100% align=left border=0 cellspacing=0 cellpadding=0>
    <tr><td valign=top bgcolor=white align=center style='position:relative;'>

并这样做:

setTimeout(function() {FB.Canvas.setSize({height:(document.getElementById('m_table').offsetHeight+40)})}, 1000);

适用于 IE、FireFox 和 Chrome/Safari...

如果需要,这里是 FB 初始化代码:

window.fbAsyncInit = function() {
      FB.init({appId:'your_app_id',status:true,cookie:true,xfbml:true});fbApiInit = true;
      }

 function fbEnsureInit(callback)
  {
    if(!window.fbApiInit) setTimeout(function() {fbEnsureInit(callback);}, 50);
        else if(callback) callback();
  }
 fbEnsureInit(function() {
    FB.Canvas.scrollTo(0,0);
    var h = document.getElementById('m_table').offsetHeight+40;
   // console.log('setting size to '+h);
    FB.Canvas.setSize({height:h});
     setTimeout(function() {FB.Canvas.setSize({height:(document.getElementById('m_table').offsetHeight+40)})}, 1000);
  });
于 2012-10-05T01:11:18.267 回答