在FB.Canvas API中,有一些方法可以獲取滾動頂部,頂部偏移量和客戶端高度(通過getPageInfo()),但我需要一種方法來查找頂部最多的窗口滾動位置,以便確定我需要的區域對客戶來說是可見的。用戶將通過表單進行製表並且比大多數屏幕更高。我需要確保表單項是可見的。有沒有辦法在Facebook API中獲取窗口滾動位置?
5
A
回答
4
看起來,getPageInfo()。scrollTop屬性和getPageInfo()。offsetTop一起會爲您提供頂部窗口滾動位置。
下面是我用來將元素滾動到視圖中的最終代碼,給出絕對/全局x和y座標。
function scrollElementIntoViewFB(applicationID, elementTop, elementBottom) {
var pageInfo = FB.Canvas.getPageInfo();
// fallback if running local
if (pageInfo.clientHeight==0) {
scrollElementIntoView(applicationID, elementTop, elementBottom);
return;
}
var scrollPosition = pageInfo.scrollTop;
var viewportHeight = pageInfo.clientHeight;
var flashOffsetTop = pageInfo.offsetTop;
var elementAbsoluteTop = elementTop + flashOffsetTop;
var elementAbsoluteBottom = elementBottom + flashOffsetTop;
var visibleBottomPosition = viewportHeight + scrollPosition;
if (scrollPosition>elementAbsoluteTop) {
FB.Canvas.scrollTo(0, elementAbsoluteTop);
}
else if (visibleBottomPosition<elementAbsoluteBottom) {
FB.Canvas.scrollTo(0, elementAbsoluteBottom-viewportHeight);
}
return true;
}
如果因爲某些原因,你想要的HTML唯一版本(這將不會在iframe中,如果在裏面工作,如Facebook另一個域名,但在自己的網站將工作):
function scrollElementIntoView(applicationID, elementTop, elementBottom) {
var scrollPosition = f_scrollTop();
var viewportHeight = f_clientHeight();
var flashElement = swfobject.getObjectById(applicationID);
var flashOffsetTop = flashElement.offsetTop; // not sure if this is cross browser
var elementAbsoluteTop = elementTop + flashOffsetTop;
var elementAbsoluteBottom = elementBottom + flashOffsetTop;
var visibleBottomPosition = viewportHeight + scrollPosition;
if (scrollPosition>elementAbsoluteTop) {
window.scrollTo(0, elementAbsoluteTop);
}
else if (visibleBottomPosition<elementAbsoluteBottom) {
window.scrollTo(0, elementAbsoluteBottom-viewportHeight);
}
return true;
}
搜索在線對於其他功能的名稱,你會發現其餘的代碼。
0
與定位方面的回答相同的一般方法,一旦你有你的滾動位置,但我認爲sdk已經發布了輕微的變化,並且getPageInfo()方法現在需要一個回調函數,所以得到相同的初始數據你就必須開始是這樣的:
FB.Canvas.getPageInfo(function(info){
console.log(info);
//... code for positioning based on fb window
});
http://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/
相關問題
- 1. 有沒有辦法直接從科爾多瓦獲取滾動位置?
- 2. 有沒有辦法pushState()在Facebook畫布的父窗口?
- 3. 在gtk滾動窗口中獲取鼠標位置
- 4. 有沒有辦法在Ghost.py中設置窗口大小?
- 5. 有沒有什麼辦法可以從Facebook Graph API獲取Facebook頁面的位置或區域?
- 6. 有沒有辦法通過Google API獲取用戶的「家」和「工作」位置?
- 7. jQuery - 防止滾動元素當窗口滾動沒有固定位置
- 8. JavaScript獲取滾動的窗口X/Y位置
- 9. WPF有沒有什麼辦法在SizeChanged事件中獲取以前的位置?
- 10. 有沒有辦法在我的活動窗口更改時放置斷點?
- 11. 有沒有辦法手動獲取地理位置數據進行測試?
- 12. 有沒有辦法設置窗口讓控制檯窗口打開?
- 13. 有沒有辦法使用本機C++從WPF窗口捕獲位圖?
- 14. 有沒有辦法獲得一個窗口的GraphicsPath?
- 15. 有沒有辦法獲得鉻的文檔和窗口屬性
- 16. 有沒有辦法獲得窗口的「進度」值?
- 17. 有沒有辦法在jQuery中獲取動畫的最終值?
- 18. 有沒有辦法獲取API來反應js中的表?
- 19. Xna - 獲取窗口位置?
- 20. 有沒有辦法在終端中維護兩個窗口?
- 21. 沒有觸發touchmove的窗口滾動
- 22. 有沒有辦法用PHP獲取Facebook頁面的名字?
- 23. 有沒有滾動到窗口100%的方法?
- 24. jquery獲取窗口位置+滾動 - 但如果不滾動不顯示
- 25. 如何滾動Firefox中沒有滾動條的窗口?
- 26. 有沒有辦法在IE中設置下載窗口的標題?
- 27. 有沒有辦法從sqlite3對象中獲取數據庫位置?
- 28. 有沒有辦法獲得滾動條的高度和寬度?
- 29. 有沒有辦法從facebook api中檢測用戶的「人性」?
- 30. 有沒有辦法在UIScrollView中隱藏滾動指標?