2012-06-12 1 views
1

사용자가 내 Facebook 캔버스 앱을 스크롤 할 때 가운데에 배치되는 대화 상자를 만들려면 어떻게해야합니까?Facebook 캔버스 앱의 가운데에있는 대화 상자

제목에 this 게시물을 읽었지만 거기에 설명 된 방법 (문서화되지 않은 facebook-event 수신)이 제대로 작동하지 않았습니다.

+0

CSS 위치를 사용하여 시도해 보셨습니까? 고정 되었습니까? – CBroe

+0

예, 작동하지 않습니다. –

+0

음, 문서화되지 않은 이벤트를 듣기 위해 스크롤 위치를 영구히 확인하고 대화 상자의 위치를 ​​조정할 수있는 간단한 간격으로 항상 바꾸려고 시도 할 수 있습니다. – CBroe

답변

3

페이스 북이 더 이상 서버를 폴링하지 않아서 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); 
}; 

참고 : 그러나, 뭔가 여론 조사 스스로 작성하고, 적절하게 대화를 이동하는 매우 간단 당신이 아약스 호출이 얼마나 걸릴지 모르는 나는 오히려 setInterval을보다의 setTimeout을 사용했습니다 , 주문 응답을 처리하고 싶지는 않습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 이것이 효과가있을 것이라고 생각하지만 대화는 폴링이 완료된 것과 같은 비율로 집중 될 것입니다, 맞습니까? –

+0

예, 불행히도 도메인 간 제한으로 인해이를 수행 할 수있는 유일한 방법입니다. 앱의 iframe 내부에서 JS를 사용하여 창 스크롤 위치 및 iframe 오프셋에 직접 액세스하는 것은 불가능합니다. –

+0

감사합니다 !!!!!! –