当用户滚动浏览我的Facebook画布应用程序时,如何创建一个保持居中的对话框?
我已经阅读了关于这个主题的this帖子,但那里描述的方法(收听未记录的facebook事件)并不适合我。
答案 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调用需要多长时间,并且不希望处理乱序响应。