2011-08-12 44 views
2

我有一個只能通過粉絲頁面運行的Facebook應用程序。
轉到應用:http://apps.facebook.com/imageassistant/(你應該有一個粉絲頁面來檢查)
如何調整Facebook的iframe應用程序窗口的大小

我需要提高我的畫布頁面的高度,就像我可以用一個固定寬度值(如果你跑我應用程序,你會看到)

我有一個index.php文件,其中包括fbmain.php文件

//index.php 
<?php 
include_once "fbmain.php"; // this file do all authentication parts 
//some codes 
?> 

我需要調整我的所有網頁在我的應用
我發現了一些代碼■從facebook developer page

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

// Do things that will sometimes call sizeChangeCallback() 

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

與此相關的,這

FB.Canvas.setSize({ width: 640, height: 480 }); // Live in the past 

但我不知道如何在我的應用程序使用這些代碼,我應該在哪裏把那些? 我是否已將這些代碼放入應用程序的每個文件中?
我是否必須在我的開發人員應用程序頁面中更改應用程序設置? (IFrame大小顯示滾動條或自動調整大小之前做到這一點)
任何人都可以請發佈完整的答案,包括我應該把那個放在哪裏?
注:我使用的PHP SDK

回答

3

但我不知道如何在我的應用程序使用這些代碼,我應該在哪裏把那些?

有許多這樣做的以下的有效方式只是其中的一個:

<!doctype html> 
<html xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <head> 
     <!-- YOUR HEADER CONTENT --> 
    </head> 
    <body> 
     <div id="fb-root"></div> 

     <!-- You Page Content HERE --> 

     <script> 
      window.fbAsyncInit = function() { 
      FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true}); 
      FB.Canvas.setSize(); 
      }; 
      (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> 
    </body> 
</html> 

難道我已經把每個這段代碼在我的應用程序的每個文件?

如果你想iFrame調整大小,那麼你需要在每個頁面中包含這種類型的代碼。

我是否必須更改我的開發人員應用程序頁面中的應用程序設置?

爲此,您需要在開發人員應用程序中選擇自動調整大小選項。


如果您的內容大小是動態的,那麼您還需要考慮FB.Canvas.setAutoResize

您也可能會翻過的問題,其中FB.Canvas.setSize觸發太早在這種情況下,你可以使用的setTimeout延遲它 - 從經驗中我發現的200ms約爲最佳:

  window.fbAsyncInit = function() { 
      FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true}); 
      window.setTimeout(
       function() { 
        FB.Canvas.setAutoResize(); 
       }, 
       200 
      ); 
      }; 
+0

再次感謝,它的工作原理。 你能告訴我如何設置畫布的固定寬度嗎?(假設我想要一個500的固定寬度) – Roshanck

+0

你試過了:FB.Canvas.setSize({width:500}); – jBit

+0

是的,它works.tnx。還有一個問題。當我向下滾動時,可以看到頁面卡住,因爲它正在加載(當我向下滾動時,我可以看到頁面正在加載)我可以阻止它嗎?我沒有這個問題沒有重新大小的代碼 – Roshanck

1

剛在您的項目中包含javascript SDK文件。

,然後使用script標籤src屬性包含上述文件在您的index.php文件,並在index.php文件編寫代碼:

<?php 
     echo '<script type="text/javascript"> 
     window.fbAsyncInit = function() { 
      FB.init({appId:'Your AppID here', status: true, cookie: true, 
         xfbml: true}); 
      FB.Canvas.setSize({ width: 640, height: 720 }); 
      }; 
    </script>';        
?> 

這將設置你的畫布大小,以指定的寬度和高度都 您的應用程序內的網頁。

相關問題