且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

为什么FB.ui不加载JavaScript SDK后甚至工作?

更新时间:2023-12-06 15:48:52

有什么不对您的code本身。

运行外fbrell有没有日志对象,因此将无法在FB.ui线,但故障无关的FB.ui通话。

在fbrell它似乎失败,因为它找不到按钮的范围publish1功能运行。

下面是本质的code的考验,带着几分整理的空白,并清除日志行的。它可以成功发布到我的墙:

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

I am just wasting time from last one week trying to figure out what goes wrong in this particular SIMPLE code sample. Firefox's Error Console says 'FB.ui not defined'. I tried to fix this by placing the code that loads javascript sdk in every possible way. But theres no effect. And all the firefox says is 'FB.ui not defined'. Someone help me out please. Thanks. (Note: I ve replaced the XXX... with ma APPID)

<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> 

There's nothing wrong with your code per se.

Running outside of fbrell there is no Log object, so it will fail on the FB.ui line, but the failure has nothing to do with the FB.ui call.

Running within fbrell it seems to fail because it can't find the publish1 function in the scope of the button.

Here's a test of essentially your code, with a bit of tidying up of whitespace and the removal of the Log line. It can successfully post to my wall:

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