如何在Facebook画布框架内捕捉滚动事件?

时间:2011-10-07 16:44:28

标签: javascript facebook scroll

我想抓住用户滚动facebook app的画布iframe。我试过了:

$(window).scroll(...)
$(document).scroll(...)
$(parent).scroll(...)
$(parent.document).scroll(...)

但它没有开火。

3 个答案:

答案 0 :(得分:6)

我认为你的意思是当用户滚动主页而不是iframe时,是否正确?

您不能直接执行此操作,您必须使用http://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/中描述的FB.Canvas.getPageInfo。您不能将其“捕获”为事件,但您可以使用setInterval或类似方法轮询滚动值以检测页面位置何时更改。

答案 1 :(得分:2)

正如@Floyd所说,滚动事件不会触发(假设您隐藏了iframe滚动条),因为您的应用程序位于Facebook内的iframe中。

您可以使用FB.Canvas.getPageInfo {{3}检测用户在页面上的滚动位置(Facebook,而不是您的应用 - 因此除非您考虑标题和浮动标题,否则它将不会完全准确)但是你必须在想要检查用户滚动位置时轮询事件,这样你就可以在setInterval的计时器上设置它。

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

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

http://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/

示例:

// 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
    }
});

答案 2 :(得分:1)

认为允许这样做,我猜它与{{3}中的“配置文件接管”类似} 部分。

至于知道,您只能更改父网址:top.location.href