Facebook完成加载后运行javascript函数

时间:2011-09-22 14:31:40

标签: javascript facebook load

我正在写一个facebook应用程序,它使用badgeville来奖励玩家。有时需要在页面加载时获得积分,但我在页面上也有一些Facebook社交插件,如评论框和按钮。看来因为页面正在等待这些加载,所以不会加载badgeville的东西,以允许授予点的功能正确运行。

一旦facebook完成了这项工作,是否有任何可用于运行该功能的事件? 我找到了“FB.Canvas.setDoneLoading();”但我不确定如何实施它。

由于

2 个答案:

答案 0 :(得分:0)

当然,你可能有这样的事情:

<script>
window.fbAsyncInit = function() {
FB.init({
  appId  : 'YOUR APP ID',
  status : true, // check login status
  cookie : true, // enable cookies to allow the server to access the session
  xfbml  : true,  // parse XFBML
  channelUrl  : 'http://www.yourdomain.com/channel.html', // Custom Channel URL
  oauth : true //enables OAuth 2.0
});
FB.Canvas.setDoneLoading(
 function () {
  alert("Done loading");
 });
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
 }());
 </script>

这将确保在FB函数设置为初始化之前不会调用setDoneLoading()。

答案 1 :(得分:0)

假设您正在进行服务器端登录,您应该使用FB.Event.subscribe。如果要初始化状态为true的FB对象,则在FB对象初始化后将触发 auth.statusChange auth.authResponseChange 事件。

FB.Event.subscribe('auth.statusChange', function(response) {
    if(response.status == 'connected') {
        runFbInitCriticalCode();
    }
});

FB.init({
    appId  : 'appId',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
});