在我的FB应用程序中,我正在调用FB.Ccanvas.setSize();以使页面适合我的内容长度。这在Chrome、Firefox、Safari和IE中都能正常工作。然而,Opera似乎比其他浏览器更快地调用它,并试图在FB对象准备好接受这样的请求之前调整大小。它没有抛出JS异常,所以FB对象不是null,但它无法调整页面大小。如果我在调用resize之前放入一个断点,等待几秒钟,然后让它通过,它确实会调整页面的大小。此外,其他FB功能也在工作(请求、提要帖子等)。Opera和Facebook JS SDK是否存在任何已知问题,或者我应该考虑Opera如何执行Javascript?
让您知道,这似乎是一个"已知"的Facebook/Opera错误。您也可以在这里关注进展:developers.facebook.com/bugs
您是否使用异步方式集成FBJS,例如
<div id="fb-root"></div>
<script type="text/javascript" charset="utf-8">
window.fbAsyncInit = function() {
resizeFacebookCanvas();
}
function resizeFacebookCanvas(){
if ( FB && FB.Canvas && FB.Canvas.setSize ){
FB.Canvas.setSize({
width: 520,
height: 900
});
}
}
(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>