我正在使用FB应用程序并使用FB.Canvas.getPageInfo来获取画布的滚动以在屏幕中心设置弹出窗口,因为应用程序不是滚动而是滚动的fb画布并找到中心在长页面上的屏幕我需要获得画布滚动的像素数,然后用一些加减去我获得当前页面位置的屏幕中心。直到昨天工作正常,但从早上开始,我已经尝试了很多但尚未成功。
在setTimeout
函数中调用代码,直到收到值为止,我强行将弹出窗口显示为无,并显示加载器图像。
记住它工作正常,直到昨晚
这是代码
$('.popup-call-local').live('click', function(event){
//FB.Canvas.getPageInfo(function(info){alert(info.scrollTop);});
var view_name = this.id;
var check_view_name = view_name.replace(/_/g, '-');
if($('#'+check_view_name).length > 0){
$('#popupDiv').css('height',$('.wrap').css('height'));
$('#popupDiv').css('display','block');
$('#popupDiv').css('z-index',1000);
var x = Number((window.screen.width - 400) / 2);
var y = Number(event.pageY)+ 10;
$('#popupDiv').html('<img src="<?php echo base_url(); ?>images/loaderblack.gif" style="position:absolute; z-index:50000; left:'+x+'px; top:'+y+'px;" />');
$('#'+check_view_name).css('z-index',2000);
var viewportHeight = window.screen.height;
var windowScrolled = -1;
$foo = jQuery('#'+check_view_name),
elWidth = $foo.width(),
elHeight = $foo.height(),
elOffset = $foo.offset();
setTimeout(function(){FB.Canvas.getPageInfo(function(info){windowScrolled=info.scrollTop; while(windowScrolled == -1){
$('#'+check_view_name).css('display','none');}
var v = (((viewportHeight - elHeight) / 2) + (windowScrolled) - 100); if(v<=0){v=Number(v)*Number(-1);}$('#popupDiv').html('');$('#'+check_view_name).css('display','block');$('#spinner').css('display','none');$('#'+check_view_name).css('top', Number(v) + 'px');});}, 3000);
}else{
return false;
}
});
EDIT 井
刚刚发现它在这里报道了一个facebook bug http://developers.facebook.com/bugs/185097921606322?browse=search_4f60961cc946d7143000700