facebook javascript SDK: FB.Canvas.setAutoResize iFrame не работает? - PullRequest
10 голосов
/ 11 июня 2010

мы создали приложение facebook с ruby ​​/ rails и facebooker (приложение iframe) и в настоящее время застряли с FB.Canvas.setAutoResize, который в некоторых случаях не работает.используя пример из документации разработчика Facebook (см. http://developers.facebook.com/docs/reference/javascript/).автоматическое изменение размера завершается неудачно, когда вы входите на страницу, размер которой превышает 800 пикселей - так сказать, она работает, пока холст становится больше, а не когда он становится меньше.у кого-нибудь есть подсказка или, может быть, обходной путь?

вот фрагмент кода изменения размера

<div id="fb-root" style="width:1px;height:1px;position:absolute;"></div> 
<script type="text/javascript"> 
  window.fbAsyncInit = function() {
    FB.init({appId: '126342024064822', status: true, cookie: true, xfbml: true});
    FB.Canvas.setAutoResize(true,100);
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

Я очень благодарен за любые комментарии или подсказки, так как я поворачиваю голову вокруг этогобольше суток.

Ответы [ 3 ]

12 голосов
/ 09 июля 2010

Некоторые ключевые вещи, которые необходимо проверить, установлены в настройках приложения:

  1. Настройки холста -> Метод рендеринга = iFrame
  2. Настройки холста -> Размер iFrame = изменяемый размер
  3. Миграции -> новый SDK = включен

Затем настройте свой код, добавив тайм-аут (250, кажется, работает лучше, но вы можете поэкспериментировать дальше). Я проверял это в FF3.6 и IE7 +. В IE есть мгновенная вспышка вертикальной полосы прокрутки, которую я все еще пытаюсь исправить.

<div id="fb-root"></div> 
<script type="text/javascript"> 
  window.fbAsyncInit = function() {
    FB.init({appId: '12345678910', status: true, cookie: true, xfbml: true});
  window.setTimeout(function() {
    FB.Canvas.setAutoResize();
  }, 250);
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
7 голосов
/ 29 августа 2010

решение простое! помимо помещения FB.Canvas.setAutoResize ()
Вы должны изменить свое тело на body style = "overflow: hidden"

это работает для меня! теперь ie8 в порядке !!

2 голосов
/ 14 июня 2011

Я также хотел бы отметить, что вам действительно нужно ваше

<div id="fb-root">

, чтобы это работало

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