Facebook画布应用上的中心对话框

时间:2012-06-12 15:41:23

标签: facebook facebook-graph-api facebook-canvas

当用户滚动浏览我的Facebook画布应用程序时,如何创建一个保持居中的对话框?

我已经阅读了关于这个主题的this帖子,但那里描述的方法(收听未记录的facebook事件)并不适合我。

1 个答案:

答案 0 :(得分:3)

看起来Facebook不再轮询服务器以将pageInfo更新为其库的一部分。但是,写一些自己调查的东西并适当地移动对话框是相当简单的:

var timeout;
var positionDialog = function(){
    FB.Canvas.getPageInfo(function(pageInfo){
         $("#dialog").animate({top: Math.max(parseInt(pageInfo.scrollTop) - parseInt(pageInfo.offsetTop) + 
            ((parseInt(pageInfo.clientHeight)-$("#dialog").outerHeight())/2), 0)}, 100);
         timeout = setTimeout(positionDialog, 250);
    });
};

var showDialog = function(){
    // show your dialog
    $("#dialog").show();
    positionDialog();
};

var hideDialog = function(){
    $("#dialog").hide();
    clearTimeout(timeout);
};

注意:我使用了setTimeout而不是setInterval,因为您不知道ajax调用需要多长时间,并且不希望处理乱序响应。