javascript FB обектът не е готов, когато извикам FB.Canvas.setSize в Opera

В моето FB приложение се обаждам на FB.Canvas.setSize(); за да пасне на страницата според дължината на моето съдържание. Това работи по предназначение в Chrome, Firefox, Safari и IE. Изглежда обаче, че Opera го извиква по-рано от останалите браузъри и се опитва да промени размера, преди FB обектът да е готов да приеме такава заявка. Не хвърля JS изключение, така че FB обектът не е нулев, но не успява да преоразмери страницата. Ако поставя точка на прекъсване, преди да бъде извикано преоразмеряването и изчакам няколко секунди и след това го оставя да мине, това НАПРАВЯВА преоразмеряване на страницата. Също така други функции на FB работят (заявки, публикации във емисии и т.н.). Има ли известни проблеми с Opera и Facebook JS SDK или някакви съображения, които трябва да взема за това как Opera изпълнява Javascript?


person keybored    schedule 29.02.2012    source източник
comment
Коя версия на Opera тествате?   -  person kirilloid    schedule 29.02.2012
comment
Извиквате ли setSize() без параметри? Възможно е FB обектът да е готов, но страницата да не е изобразена напълно, така че размерът да не е определен правилно. Опитайте да посочите буквална височина/ширина и вижте дали това ще го направи.   -  person Floyd Wilburn    schedule 01.03.2012


Отговори (2)


Само да ви уведомя, че това изглежда като "известен" бъг във Facebook/Opera. Можете също да следите напредъка тук: developers.facebook.com/bugs

person Espen Larød    schedule 02.03.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>
person scibuff    schedule 01.03.2012
comment
Всъщност не съм, това ще окаже ли влияние върху това? Или е по-скоро, опитайте и ще разберем? той Х - person keybored; 02.03.2012