ユーザーが Facebook キャンバス アプリをスクロールしても中央に表示されるダイアログを作成するにはどうすればよいですか?
この件に関する投稿を読みましたが、そこに記載されている方法 (文書化されていない Facebook イベントを聞く) はうまくいきませんでした。
ユーザーが Facebook キャンバス アプリをスクロールしても中央に表示されるダイアログを作成するにはどうすればよいですか?
この件に関する投稿を読みましたが、そこに記載されている方法 (文書化されていない Facebook イベントを聞く) はうまくいきませんでした。
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);
};
注: ajax 呼び出しにかかる時間がわからず、順不同の応答を処理したくないため、setInterval ではなく setTimeout を使用しました。