2012-03-08 1 views
5

Я разрабатываю приложение для страницы Facebook с макетом временной шкалы, и я хочу, чтобы высота приложения масштабировалась с контентом, но высота приложения фиксирована на 800px.Timeline page app height застрял на 800px

Текущие настройки приложения показывают, что высота установлена ​​на «жидкость», но я также попытался установить высоту на случайные значения и не увидел никаких изменений.

Как получить высоту моего приложения для масштабирования до его содержимого? Спасибо за любые ответы.

Обновление: Так что добавление этого к тегу моего тела работало.

<body onload="FB.Canvas.setSize({width: 810, height: 910})"> 
<div id="fb-root"></div> 
<script> 
(function() { 
    var e = document.createElement('script'); 
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#xfbml=1&appId=YOURAPPID; 
    e.async = true; 
    document.getElementById('fb-root').appendChild(e); 
}()); 
</script> 

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

ответ

8

Это правильный способ настроить ситуацию, мне просто пришлось некоторое время смотреть на нее и читать документацию слишком много раз. Поставив ниже, div-корневой div работал как чемпион.

window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'YOURAPPID', // App ID 
     channelUrl: '/channel.html', // Channel File 
     status: true, // check login status 
     cookie: true, // enable cookies to allow the server to access the session 
     xfbml: true // parse XFBML 
    }); 
    FB.Canvas.setAutoGrow(); //Resizes the iframe to fit content 
}; 
// 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 = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
} (document)); 
+1

'setAutoResize' это осуждает, как упомянуто [здесь] (HTTPS : //developers.facebook.com/docs/reference/javascript/FB.Canvas.setAutoResize/). Вы должны использовать 'setAutoGrow'. –

+0

Хорошая добыча! Я обновлю ответ. Благодаря! – Tuck

+0

Как это работает с iFramed-приложением? Я сталкиваюсь с проблемами межсайтового скриптинга, которые мешают этому работать. Есть идеи? Благодаря! –

0

Вставить код Javascript, чтобы увеличить высоту фрейма

<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.Canvas.setAutoResize(100); 
    } 

    function sizeChangeCallback() { 
    FB.Canvas.setSize({ width: 810, height:1300 }); 
    } 
    </script> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
FB.init({ 
appId : 'YOUR APP ID', 
status : true, 
cookie : true, 
xfbml : true 
}); 
</script> 
0

Ответ на Ashish работал хорошо для меня.

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

тело {переполнения: скрытый;}