最近使用Facebook画布iframe应用程序时遇到问题。 我已将设置设置为“自动调整大小”,并实施了正确的FB JS调用来调整高度(以避免不必要的滚动条),但似乎没有起作用。
是否有其他人遇到过此问题或找到解决方案?
谢谢!
Erik
是否有其他人遇到过此问题或找到解决方案?
谢谢!
Erik
在 </body>
标签之前,我编写了以下代码。
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: '<?php echo YOUR_APP_ID ?>',
cookie: true,
xfbml: true,
oauth: true
});
FB.Canvas.setAutoGrow(true);
};
(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>
对我来说它运作良好。
在高级应用程序设置中,height
是Fixed or Fluid
并不重要。
在我的应用程序中,FB.Canvas.setAutoGrow(true)
没有起作用,但我发现我错过了<div id="fb-root"></div>
代码。我只需将其放在<script type="text/javascript">
之前并解决了这个问题。
进一步阐述已经指出的几点:
window.fbAsyncInit = function () {
FB.init({
appId: 'YOUR APP ID',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
FB.Canvas.setAutoGrow(true);
};
html {
width: 760px;
overflow: hidden;
}
鲁兹别的回答是正确的。然而,他的代码很可能会产生一个错误(至少在Firefox中),因为旧的和新的SDK都被引用了(它们彼此之间不兼容)。
另外,只需使用新的SDK来调整高度就非常简单:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function () {
FB.init({ appId: 'YOUR APP ID', status: true, cookie: true, xfbml: true });
FB.Canvas.setSize({ height: 890 });
};
(function () {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
} ());
</script>
Official documentation available here.
FB.Canvas.setAutoResize将被弃用,您应该使用FB.Canvas.setAutoGrow,因为它可以完全满足您的需求。
嗯...自动调整大小有点问题,有时候只能偶尔起作用
你可以手动设置它,像这样: FB.Canvas.setSize({ height: $('body').height() });
FB.init()
从未被调用。在我的情况下,我把它放在了jQuery的document.ready
函数中。千万不要这样做!$(function() { ... jquery here... });
// do FB stuff
FB.init({appId: 'APP_ID', status: true, cookie: true });
FB.Canvas.setAutoGrow();
自动调整大小不起作用。这是 Facebook 尚未修复的一个重大错误。
然而,以下是解决问题的代码:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: 'YOUR APP ID', status: true, cookie: true, xfbml: true});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
<script type="text/javascript" src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script>
<div id='FB_HiddenContainer' style='display:none;position:absolute;left:-100px;top:-100px;width:0;height:0'>
</div>
<script type="text/javascript">
window.onload = function(){
FB_RequireFeatures(['CanvasUtil'], function(){
FB.CanvasClient.setCanvasHeight('1500px');
});
};
</script>