2011-11-10 68 views
0

我試圖爲我的Facebook應用程序實現流體畫布。我使用的腳本setAutoGrow設置畫布長度

window.fbAsyncInit = function() { 
FB.Canvas.setAutoGrow(); 
} 

就在我初始化我的應用程序,但它仍設置爲800像素。我應該如何使用這個功能?

+0

好吧...只是想補充一點,我目前正在測試我的應用程序從本地主機在Facebook上。 –

回答

0

請參閱本頁面:

https://developers.facebook.com/docs/reference/javascript/FB.Canvas.setAutoGrow/

「這個功能,如果你知道你的內容會改變大小是有用的,但你不知道什麼時候會有輕微的延遲,因此,如果您知道您的內容何時更改大小,您應該自己調用setSize(並保存用戶的CPU週期)。「

所以,如果你有一些JavaScript函數,增加高度,你可以調用的setSize方法,否則setAutoGrow並指定一個或長或短interva

+0

一遍又一遍地通過文檔,但不是運氣呢! –

0
Try with following.It will auto resize your iframe. 

<html> 
<head> 
<script src="./includes/js/jquery.min.js"></script> 
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script> 
<script type="text/javascript"> 

window.fbAsyncInit = function(){ 
FB.init({appId: 'appid', status: true, cookie: true, xfbml: true}); 
FB.Canvas.setAutoResize();}; 
function setSize(){ 
FB.Canvas.setAutoResize();} 

</script> 
</head> 
<body style="overflow: hidden" onload="setSize()"> 
+0

我可以嘗試,但文檔說明[setAutoResize()](http://developers.facebook.com/docs/reference/javascript/FB.Canvas.setAutoResize/)將從明年開始過時。所以我將不得不堅持setAutoGrow()... –

0

如果你正在嘗試使用一種流體畫布,然後不需要設置iframe的大小。事實上,你不應該這樣稱呼它,因爲FB中存在一個bug;當設置爲流體時,調用iframe的大小應該什麼也不做 - 實際上情況並非如此,並且調用得到處理。有記錄的對這個位置的錯誤:http://developers.facebook.com/bugs/272509486115193但FB都認爲這種低優先級(!令我煩惱)

爲了獲得流體正常工作,請參考以下文檔:https://developers.facebook.com/blog/post/549

您需要請確保頁面上的內容容器的高度設置爲100%,如上面鏈接的文檔頁面上的說明。

1

之前</body>標籤,我寫了下面的代碼。

<div id="fb-root"></div> 
<script type="text/javascript"> 
      window.fbAsyncInit = function() { 
       FB.init({ 
        appId: '<?php echo YOUR_APP_ID ?>', 
        cookie: true, 
        xfbml: true, 
        oauth: true 
       }); 
       FB.Canvas.setAutoGrow(true); 
      }; 
      (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> 

它對我來說工作正常。

高級應用程序設置中height是否爲Fixed or Fluid並不重要。

FB.Canvas.setAutoGrow(true);沒有在我的應用程序中工作,但我發現我錯過了<div id="fb-root"></div>代碼。我只是把它放在<script type="text/javascript">之前,並解決了問題。

2

只是爲了可能幫助其他人,請嘗試從代碼中刪除http或https。這裏是我的(注意ChannelUrl線):

<div id="fb-root"></div> 
    <script type="text/javascript" src="//connect.facebook.net/en_US/all.js"></script> 
    <script type="text/javascript"> 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : 'YOUR_APP_ID', // App ID 
     channelUrl : '//WWW.YOURURL.COM/FOLDER', // Channel File  
     status: true, 
     cookie: true, 
     xfbml: true 
     }); 
     FB.Canvas.setAutoGrow(); 
    } 
    </script> 

我刪除了http/https後,它在所有瀏覽器上都能正常工作。