0

Я создаю приложение холста Facebook для загрузки в iframe.FB.Canvas.setSize() выглядит не работающим в Safari и Chrome. Как заставить его работать?

Высота содержимого может отличаться из-за динамических данных, загружаемых там, и их нельзя установить заранее. Холст должен изменить размер, чтобы он соответствовал содержимому автоматически. Мне нужно избавиться от вертикальной полосы прокрутки в iframe во всех современных браузерах.

Я установил «Холст Высота: Зафиксировано 800px» в расширенных настройках приложения и использовать раствор с FB.Canvas.setSize(), который рекомендуется:

<body> 
    <div id="fb-root"></div> 
    <script type="text/javascript"> 
     window.fbAsyncInit = function() { 
      FB.init({ 
       appId: 'NNNN', // My App ID is placed here 
       status: true, 
       cookie: true, 
       xfbml: true 
      }); 
      FB.Canvas.setSize(); 
      FB.Canvas.setAutoGrow(7); 
     }; 

     function sizeChangeCallback() { 
      FB.Canvas.setSize(); 
     } 

     // Load the SDK Asynchronously 
     (function (d) { 
      var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
      if (d.getElementById(id)) { return; } 
      js = d.createElement('script'); js.id = id; js.async = true; 
      js.src = d.location.protocol + "//connect.facebook.net/en_US/all.js"; 
      ref.parentNode.insertBefore(js, ref); 
     } (document)); 
     ... 
    </script> 
    ... 
</body> 

Он отлично работает в Firefox, MSIE 9 и Opera. Но он не работает в браузерах WebKit в Windows: Safari и Chrome.

Safari отображает следующий код для холста фрейма:

<iframe class="canvas_iframe_util noresize" frameborder="0" scrolling="no" id="iframe_canvas" name="iframe_canvas" src='javascript:""' height="800" style="height: 800px; overflow-y: hidden; "></iframe> 

Что я делаю неправильно? Можно ли одновременно работать в Firefox, MSIE, Opera, Safari и Chrome?

ответ

0

Я использую только «FB.Canvas.setAutoGrow();» (в том же месте у вас есть это, но без параметра), чтобы автоматизировать размер моих фреймов, и он отлично работает. Полоски прокрутки также удаляются. Может ли быть проблема в другом месте?

+0

Спасибо! Я тоже пробовал этот вариант. Но он также работает в Firefox, но не в Safari и Chrome. –

+0

Он работает для меня в Safari (5.1.1) на Mac, что заставляет меня задаться вопросом, не проблема ли в другом месте для вас - может быть, вопрос времени? Выполняется ли вызов FB setAutoGrow() * до того, как вы закончили динамическое внесение содержимого страницы? Просто мысль, извините, я не могу больше помогать. – Snouto

+0

Теперь я использую Safari 5.1.5 для Windows. –

1

Я только что столкнулся с той же проблемой, я думаю, что это проблема, связанная с вебкитом. После много отладки я пришел к выводу, что FB не может определить высоту, если для метки <html> вашей страницы установлено значение height:100%;. Надеюсь, это поможет некоторым бедным душам.