2011-10-07 51 views

回答

6

我想你的意思是,当用户滚动主页,而不是iframe中,正确的收获?

你不能直接做,你将不得不使用FB.Canvas.getPageInfo,如http://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/所述。您不能将它“捕捉”为事件,但您可以使用setInterval或类似的轮询滚动值来检测页面位置已更改。

+0

http://developers.facebook.com/bugs/355414417803241?browse=search_4f334ef27016b2834810708 –

1

认为不允许这样做,我想这是类似于Prohibited Functionality节“档案接管”。

至于知道,你只能变化父网址:top.location.href

2

由于@Floyd表示,由于您的应用位于Facebook内部的iframe中,滚动事件不会触发(假设您隐藏了iframe滚动条)。

您可以检测用户位置滚动页面上(Facebook的,不是你的应用程序 - 所以,除非你把标题和浮动头进去也不会完全准确)通过使用FB.Canvas.getPageInfohttp://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/但你必须轮询事件,当你想检查用户滚动位置,所以你可以设置它在一个定时器setInterval

我刚刚为此创建了一个插件用于我的一个Facebook应用程序。要使用它,只需在window.fbAsyncInit函数之后并在加载Facebook Javascript SDK之前包含插件。

您可以订阅Facebook事件“滚动”或收听dom事件“fb-scroll”,其中两个参数将通过“topPercent”和“bottomPercent”,然后根据用户滚动位置调用您自己的功能。

https://github.com/kus/facebook-app-scroll-event

实施例:

// Subscribe to custom Facebook event 
FB.Event.subscribe('scroll', function(topPercent, bottomPercent){ 
    console.log('scroll', topPercent, bottomPercent); 
}); 

// Listen to dom event with jQuery 
jQuery(document).on('fb-scroll', function(evt, topPercent, bottomPercent){ 
    if(bottomPercent == 100){ 
     // load more content 
    } 
});