对API画布宽度的FB API调用始终为零

时间:2011-06-21 01:47:26

标签: javascript html facebook facebook-graph-api

我正在使用Facebook Graph API(javascript one)。

我正在尝试使用函数FB.Canvas.getPageInfo()[“clientWidth”]获取画布大小;

但它总是血腥归零,为什么?

也许它在我调用函数时?也许它的意思是零,但我不这么认为,因为如果是这样我就无法在画布中看到我的HTML因为宽度为零了吗?

我的代码:

<html>
<head>

</head>
<body>

    <div id="fb-root"></div>
<script>
  window.fbAsyncInit = function()
      {
        FB.init( {appId: 'MYAPPID', status: true, cookie: true, xfbml: 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>
</body>

<script type="text/javascript">
<!--
     alert( FB.Canvas.getPageInfo()["clientWidth"] );  // PS other SDK calls do work likelogin so I know my app id etc are correct
-->
</script>

</html>

1 个答案:

答案 0 :(得分:0)

  

分配给的功能   window.fbAsyncInit尽快运行   Facebook JS SDK已加载。任何   SDK之后要运行的代码   加载应该放在这个内   功能和呼叫后   FB.init()。

现在试试这个。

<html>
<head>

</head>
<body>

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function()
      {
        FB.init( {appId: 'MYAPPID', status: true, cookie: true, xfbml: true} );
        alert( FB.Canvas.getPageInfo()["clientWidth"] );

      };
      (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>