2011-10-07 66 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 
    } 
});