Как изменить размер фрейма в Facebook, чтобы он соответствовал меньшему содержанию? - PullRequest
0 голосов
/ 09 сентября 2011

Из моих исследований кажется, что это повторяющаяся проблема.Я использую следующий код для изменения размера iframe, в настоящее время он работает ... то есть он изменяет размер iframe, чтобы соответствовать большему контенту, однако он не будет уменьшаться снова!

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    /* Init fb Resize window */
    FB.Canvas.setAutoResize(7);
    FB.init({
        appId:'<?php echo Yii::app()->params['fbAppId']; ?>',
            status: true,
            cookie: true,
            xfbml: true
    });
  };
</script>   

Кодрасполагается в самом конце html-файла перед закрывающим тегом body.

Ответы [ 3 ]

0 голосов
/ 09 сентября 2011

Самый простой способ - вызвать setSize () один раз после полной загрузки страницы, например:

<script type='text/javascript'>
window.onload=function() {
  FB.Canvas.setSize({width:760,height:document.body.offsetHeight});
}
</script>

На самом деле вам не нужен FB.init, если вы не используете SDK и для других вещей.

0 голосов
/ 06 октября 2011

Я столкнулся с точно такой же проблемой с моим приложением на https://fb.pienternet.be/overview в течение нескольких недель - попробовал много вещей, но ни одна из них не работает .. используя setTimeout, используя setSize вручную, новый setAutoGrow, их комбинации ... Это происходит при переходе внутри iframe от длинных к коротким страницам, но также и от коротких к длинным страницам.

Для меня работает переход на страницы с использованием родительского URI;например, apps.facebook.com/pienternet/detail/5 ... Я полагаю, что это ошибка в SDK, она будет опубликована на платформе отслеживания ошибок Facebook.

Два снимка экрана, чтобы прояснить это:

0 голосов
/ 09 сентября 2011

Нелогично вызывать FB.Canvas.setAutoResize (7); перед вызовом FB.init ()

Также не следует звонить FB.Canvas.setAutoResize (7); в window.fbAsyncInit

Вот правильный пример

window.fbAsyncInit = function() {
    FB.init({
        appId  : js_fb_app_id,
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml  : true,  // parse XFBML
        oauth   : true          
    });
};
$(document).ready(function(){
    FB.Canvas.setAutoResize();
});

Использование jQuery .Таким образом, вы можете быть уверены, что размер страницы будет изменен при загрузке DOM , а не до этого.Таким образом, вы можете разместить свой код в любом месте страницы.

Вы устанавливаете FB.Canvas.setAutoResize на 700 мс.Есть ли у вас особые причины для этого?Значение по умолчанию составляет 100 мс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...