2011-08-12 45 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>';        
?> 

这将设置你的画布大小,以指定的宽度和高度都 您的应用程序内的网页。

相关问题