2011-09-09 39 views
0

從我的研究看來,這似乎是一個重新發生的問題。我使用下面的代碼來調整iframe的大小,它目前的工作原理是...它調整iframe的大小以適應更大的內容,但是它不會再縮回來!調整Facebook 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文件的最後,在關閉正文標記之前。

回答

0

調用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毫秒。你有什麼特別的理由這麼做嗎?默認值爲100ms

+0

我已經試過你的代碼,它有相同的結果。 iframe會增長,但不會縮小。我想我現在已經找到了解決方案,它涉及手動縮小iframe。 – Jack

+0

FB.Canvas.setAutoResize使用setInterval()並每隔XX毫秒重新計算頁面高度。不縮小頁面意味着JS無法獲得iframe的高度。這可能是由於某種「位置:絕對」或漂浮在HTML(CSS)代碼中。 – sensor

0

最簡單的方法是調用的setSize()後,一旦頁面完全加載,這樣的:

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

你實際上並不需要FB.init除非您在使用其他事情的SDK也是如此。

0

我面對完全一樣的問題,我的應用程序上https://fb.pienternet.be/overview幾個星期了 - 嘗試了很多東西,但他們沒有工作..使用的setTimeout,使用手動的setSize,新setAutoGrow,它們的組合...在iframe中從長頁到短頁導航時,也可能是從短頁到長頁。

對我而言,什麼工作是使用父URI導航到頁面;例如apps.facebook.com/pienternet/detail/5 ...我想這是SDK中的一個錯誤,也會在Facebook的bug追蹤平臺上發佈。

兩個截圖,以明確這一點:

+0

我看過Zynga如何解決這個問題。他們使用他們自己的iFrame。 – Jack

相關問題