Похоже, что Facebook больше не проводит опрос на сервере, чтобы обновить страницуInfo как часть их библиотеки. Тем не менее, это довольно просто, чтобы написать что-то, что опросы это самостоятельно, и соответствующим образом переместить диалог:
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, так как вы не знаете, как долго Аякса звонки будут принимать , и не хотят обрабатывать ответы не в порядке.
Вы пробовали использовать CSS-позицию: исправлено? – CBroe
Да, это не работает. –
Ну, вы всегда можете попытаться заменить прослушивание недокументированного события простым интервалом, в котором вы постоянно проверяете положение прокрутки и приспосабливаете свое положение диалогов к нему. – CBroe