2012-03-08 3 views
5

Sto sviluppando un'app per una pagina di Facebook con il layout 'timeline' e voglio che l'altezza dell'app si riduca con il contenuto, ma l'altezza dell'app è fissata a 800px.Altezza pagina pagina Timeline bloccata a 800px

Le impostazioni correnti dell'app mostrano che l'altezza è impostata su "fluido", ma ho anche provato a correggere l'altezza con valori casuali e non ho visto cambiamenti.

Come si aumenta l'altezza della mia app in base al contenuto? Grazie per eventuali risposte.

Aggiornamento: Quindi aggiungere questo al tag del mio corpo ha funzionato.

<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> 

Ma non ho idea a zero perché ha funzionato, quindi credo che cambierò la mia domanda a 'che cosa fa il codice di cui sopra?' quindi posso effettivamente capire quali passi fare la prossima volta. Per ora, metterò una risposta come risposta per chiudere la domanda.

risposta

8

Questo è il modo corretto di impostare le cose, ho solo dovuto fissarlo per un po 'e leggere la documentazione troppe volte. Mettendo quanto segue sotto il div fb-root ha funzionato come un campione.

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' si depreca come accennato [qui] (https : //developers.facebook.com/docs/reference/javascript/FB.Canvas.setAutoResize/). Dovresti usare 'setAutoGrow'. –

+0

Buona cattura! Aggiornerò la risposta Grazie! – Tuck

+0

Come può funzionare con un'app iFramed? Ottengo problemi di cross site scripting che impediscono il corretto funzionamento. Qualche idea? Grazie! –

0

incorporare codice javascript per aumentare l'altezza di iframe

<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

La risposta Ashish ha funzionato bene per me.

ho incluso anche uno stile corpo per evitare che le barre di scorrimento di apparire per un secondo mentre il caricamento della pagina:

body {overflow: hidden;}