2011-01-19 122 views
7

我正在使用iframe处理Facebook画布页面应用程序。我使用fb.ui()创建了一个用于共享的对话框,但是当对话框打开时,它首先居中,然后一旦异步调用加载对话框,就会将对话框移动到iframe的顶部并滚动浏览器到顶部。防止fb.ui()滚动浏览器

我认为使用jQuery来重新定位盒子,但我也必须滚动浏览器位置尖叫黑客给我。任何建议将不胜感激。

+3

这已被报告为[臭虫在Facebook的SDK(https://developers.facebook.com/bugs/359862544085722/)。我并不乐观,但如果大家都说他们可以复制它,他们就会解决它。 – 2013-02-24 05:26:28

回答

0

我正在使用jquery获取滚动位置,然后将其设置在响应函数中。

scroll = $(window).scrollTop(); 
FB.ui(
{ 
//setup 
}, 
function(response) 
{ 
//handle response 
$(window).scrollTop(scroll); 
}); 
+0

这会工作,但它会产生闪烁的效果,这是不好的:) – nXqd 2013-07-29 06:53:37

+0

这可以工作,以捕获他们尝试滚动和还原它: $(window).one('scroll.fbshare',function( ){ $(window).scrollTop(scroll); }); – Dtipson 2015-11-10 16:10:51

1

有同样的问题,在iFrame中的定位吸。保持对话框正确定位的最简单方法是使用弹出式显示选项,该选项在当前页面中心上方弹出一个新的浏览器窗口。它不太漂亮,但它很好用。

//generic sharing function 
var fbshare = function(url, display) { 
    var share = { 
     method: 'stream.share', 
     u: url, 
     display: display 
    }; 
    FB.ui(share); 
}; 

//share using popup 
<a href="#fbshare" onClick="fbshare('http://www.theurl.com','popup');">Share</a> 
+0

弹出窗口确实有效..但弹出窗口阻止程序的用户无法看到此内容。 :( – xiaolin 2011-09-01 15:37:24

-1

改善内特想法...

window['__sy'] = $(window).scrollTop(); 
    FB.ui(
    { 
    //setup 
    }, 
    function(response) 
    { 
    //handle response 
    }); 
    $(window).one('scroll',function(){$(window).scrollTop(window['__sy'])}); 
0

对于谁比谁过这个问题来了,只是重申上述有关this reported bugJonathan Tran的评论,它已得到修复被Facebook,但仅用于SHARE对话框。如果你仍然遇到这个问题,你可能会调用Javascript中的FEED对话框,而Facebook并没有打算修复它。使用此:

FB.ui({ 
     method: 'share', 
     ... 

不是这个:

FB.ui({ 
     method: 'feed', 
     ...