为什么FB.ui甚至在加载javascript sdk后仍无效?

时间:2011-08-01 06:35:19

标签: html facebook browser facebook-javascript-sdk

我只是在浪费时间从最后一周试图弄清楚这个特定的SIMPLE代码示例中出了什么问题。 Firefox的错误控制台说'FB.ui未定义'。我尝试通过放置以各种可能的方式加载javascript sdk的代码来解决这个问题。但是没有效果。所有firefox都说'FB.ui没有定义'。请有人帮帮我。谢谢。 (注意:我用ma APPID替换了XXX ...)

<html>
    <head>
    <title>My Great Website</title>
    </head>
    <body>
    <div id="fb-root"></div>

    <script>

  var publish = {method: 'stream.publish',display: 'popup', // force popup mode
  attachment: {
    name: 'Connect',
    caption: 'The Facebook Connect JavaScript SDK',
    description: (
      'A small JavaScript library that allows you to harness ' +
      'the power of Facebook, bringing the user\'s identity, ' +
      'social graph and distribution power to your site.'
    ),
    href: 'http://fbrell.com/'
  }
};


function publish1()
{alert('2345');
    FB.ui(publish, Log.info.bind('stream.publish callback'));
    alert('asdf');
}
</script>

<button onclick="publish1()">Click</button>

</body>

<script>

    window.fbAsyncInit = function() {
    FB.init({appId: 'XXXXXXXXXXXXXXX', 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>
</html> 

1 个答案:

答案 0 :(得分:1)

您的代码本身没有任何问题。

在fbrell之外运行没有Log对象,因此在FB.ui行上会失败,但失败与FB.ui调用无关。

在fbrell中运行似乎失败了,因为它无法在按钮范围内找到publish1函数。

这是对基本上你的代码的测试,有点整理空白和删除日志行。它可以成功发布到我的墙上:

http://telliott.net/facebookExamples/simpleAsyncInit.html