当我在Opera中调用FB.Canvas.setSize时,javascript FB对象没有准备好

javascript FB object not ready when I call FB.Canvas.setSize in Opera

本文关键字:FB javascript 对象 准备好 Canvas Opera 调用 setSize      更新时间:2023-09-26

在我的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>