这个问题很明显。
https://www.facebook.com/TabascoUK/app_202624839826809
在Windows XP上使用Google Chrome,FB.Canvas.setAutoGrow
错误地将帧大小误算两个像素。我会将其报告为一个错误,但(1)我没有设法在所有计算机上重现相同的行为,即使它们具有相同的设置。 (2)我查看了all.js
,它看起来很好 - 没有明显的错误原因。
我已尝试重置缓存,更新浏览器等。但仍然存在2px错误。
可能导致什么?
答案 0 :(得分:1)
自发布以来,我没有遇到任何问题。但由于Chuck Morris似乎遇到了同样的问题,我将分享我的经验。
首先,我错误地认为可以在代码中随时调用FB.Canvas.setAutoGrow
。它是有道理的,因为它然后启动间隔,它应检测任何DOM更改。嗯,事实并非如此。
无论如何,诀窍是在加载DOM后加载Facebook JS。根据我的经验,这有助于解决所有故障。如果您使用的是jQuery,那么这样就可以了。
$(function(){
window.fbAsyncInit = function()
{
FB.init({/*[..]*/});
FB.Canvas.setAutoGrow(91);
FB.Canvas.scrollTo(0,0);
};
// Load the SDK Asynchronously
(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));
});
答案 1 :(得分:0)
盖,
我真的很感谢你跟进这一点,我真的希望你的方式能够在我的设置中运行,因为它比我的黑客修复要清晰得多,但它仍然错误地计算iframe的2像素。无论如何,如果有人碰到这个,这就是我所做的。
window.fbAsyncInit = function() {
FB.init({/*[..]*/});
// Additional initialization code here
FB.Canvas.setAutoGrow(91);
FB.Canvas.scrollTo(0,0);
//FB.Canvas.setAutoGrow is miscalculating the height by 2 pixels in webkit browsers
//so we shorten the content by 2 pixels right away, and a second later if things were a little too slow
window.setTimeout(function() {
$("#footer").css("height", "74px");
}, 250);
window.setTimeout(function() {
$("#footer").css("height", "72px");
}, 1000);
};
答案 2 :(得分:0)
我有同样的问题,我发现我已被添加
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
但是在Chrome中你必须通过以下方式添加
<script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>
不同的协议在Chrome中不起作用总是使用 https
或最好的方式可能是
<script type="text/javascript" src="//connect.facebook.net/en_US/all.js"></script>