最近在使用Facebook canvas iframe应用程序时遇到问题。我已将我们的设置设置为“自动调整大小”,并实施了正确的FB JS调用来调整高度的大小(以避免不必要的滚动条),但它似乎不起作用。Facebook Canvas应用程序(Iframed)自动调整大小
有没有其他人有这个问题或想出一个解决方案?
谢谢!
Erik
最近在使用Facebook canvas iframe应用程序时遇到问题。我已将我们的设置设置为“自动调整大小”,并实施了正确的FB JS调用来调整高度的大小(以避免不必要的滚动条),但它似乎不起作用。Facebook Canvas应用程序(Iframed)自动调整大小
有没有其他人有这个问题或想出一个解决方案?
谢谢!
Erik
自动调整大小不起作用。这是Facebook尚未修复的一个主要bug。
然而,这里的工作代码为周围的问题:
<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>
Roozbeh是对他的回答正确的道路上。然而,他的代码很可能会产生一个错误(至少在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>
可用here正式文件。
对不起,看不到那里的区别...这是新的还是旧的? – 2012-05-23 12:32:47
嗯......自动调整大小是越野车,只有工作有时
您可以手动设置它像这样: FB.Canvas.setSize({身高:$(“身体”)的高度()} );
如果在您的应用程序中使用jQuery :-) – SamiSalami 2012-08-06 14:12:28
FB.Canvas.setAutoResize将被弃用,您应该使用FB.Canvas.setAutoGrow,因为它确实如您所愿。
扩展在几个百分点已经指出:
window.fbAsyncInit = function() {
FB.init({
appId: 'YOUR APP ID',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
FB.Canvas.setAutoGrow(true);
};
这将允许在应用中高度动态变化。另外,在你的CSS设置明确的宽度像这样可以很好的帮助:
html {
width: 760px;
overflow: hidden;
}
你的建议帮助我了很多与Firefox的问题,tx – alex 2011-12-22 10:07:47
溢出:隐藏帮助我未解决的小问题setAutoGrow() – 2012-12-04 22:33:56
之前</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">
之前,并解决了问题。
如果有人仍然有这个问题,它的原因是你的FB.init()
永远不会被调用。在我的情况下,我把它放在我的jQuery document.ready
函数中。 不要这样做!
把这个之外您的jQuery:
$(function() { ... jquery here... });
// do FB stuff
FB.init({appId: 'APP_ID', status: true, cookie: true });
FB.Canvas.setAutoGrow();
Barbolo的回答底部是你正在寻找,自动调整一个已经贬值并带有自动更换增长,即固定同样的问题对我来说。 – scott 2012-10-09 08:34:44