1

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

我已经阅读了有关该主题的这篇文章,但是那里描述的方法(收听未记录的 facebook 事件)对我不起作用。

4

1 回答 1

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 调用需要多长时间,并且不想处理乱序响应。

于 2012-06-12T17:35:10.560 回答