JavaScript-объект FB не готов, когда я вызываю FB.Canvas.setSize в Opera - PullRequest
0 голосов
/ 29 февраля 2012

В моем приложении FB я звоню в FB.Canvas.setSize (); чтобы подогнать страницу под размер моего контента. Это работает так, как задумано в Chrome, Firefox, Safari и IE. Однако может показаться, что Opera вызывает его раньше, чем остальные браузеры, и пытается изменить размер, прежде чем объект FB будет готов принять такой запрос. Это не вызывает исключение JS, поэтому объект FB не является нулевым, но он не может изменить размер страницы. Если я установлю точку останова перед вызовом изменения размера и подожду пару секунд, а затем позволю ей пройти через нее, она изменит размер страницы. Также работают другие функции FB (запросы, фид-посты и т. Д.). Есть ли какие-либо известные проблемы с Opera и Facebook JS SDK или какие-либо соображения, которые я должен учитывать относительно того, как Opera выполняет Javascript?

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Просто чтобы вы знали, это похоже на "известную" ошибку Facebook / Opera. Вы также можете следить за прогрессом здесь: developers.facebook.com / bugs

1 голос
/ 01 марта 2012

Используете ли вы асинхронный способ интеграции FB JS, например,

<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>
...