0

有谁知道调整 Facebook 标签的 iframe 大小的代码最近是否发生了变化?

我曾经在头部添加这个:

<script type="text/javascript">
window.fbAsyncInit = function() 
{ 
   FB.Canvas.setSize( {height: 1040} );
}

// Do things that will sometimes call sizeChangeCallback()
function sizeChangeCallback() 
{
    FB.Canvas.setSize( {height: 1040} );
}
</script>

这在体内:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
   FB.init({
      appId : '561492603881225',
      status : true, // check login stat
      cookie : true, // enable cookies to allow the server to access the session
      xfbml : true // parse XFBML 
});
</script>

所有需要更改的是 APP ID 和 setSize 脚本中的值,然后我可以设置高度以匹配每个选项卡上的内容。

但是现在看我的标签,所有标签似乎都已重置为默认的 800 像素高,这让我觉得 Facebook 已经改变了他们做事的方式,但在任何地方都找不到任何东西,并且在开发者博客上什么也没看到。

4

2 回答 2

0

您首先必须检查 Canvas 是否已加载-

FB.Canvas.setDoneLoading( function(response) {
    console.log(response.time_delta_ms);
    FB.Canvas.setAutoGrow();
});

FB.Canvas.setDoneLoading

或者,您也可以尝试onBodyLoad

于 2013-08-28T15:58:58.820 回答
0

这似乎可以在没有设置高度的情况下工作,可能是响应式解决方案?

<div id="fb-root"></div>
<script type="text/javascript">
fb_root = document.createElement( 'div' );
fb_root.id = 'fb-root';
try
{
window.document.childNodes[0].appendChild( fb_root );
}
catch( error )
{
window.document.body.appendChild( fb_root );
}

window.fbAsyncInit = function() {
FB.init({
appId  : '1375967019301812', //your app ID
status : true, // check login status
cookie : true // enable cookies to allow the server to access the session
});

//FB.Canvas.setSize({ width: 520, height: 1400 });

function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

var mySetSize = function() {
    var height = getDocHeight();
    FB.Canvas.setSize({ width: 520, height: height });
    setTimeout( mySetSize, 200 );
};
setTimeout( mySetSize, 200 );
};

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


var head = document.getElementsByTagName('head')[0],
style = document.createElement('style'),
rules = document.createTextNode('body { position: relative; max-width:     520px!important;width: 520px!important; overflow: hidden!important; margin: 0px!important;     }');

style.type = 'text/css';
if(style.styleSheet)
style.styleSheet.cssText = rules.nodeValue;
else style.appendChild(rules);
head.appendChild(style);

</script>
于 2013-08-29T08:38:13.450 回答