在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. 有没有办法直接从科尔多瓦获取滚动位置?
- 3. 有没有办法在LWJGL/LibGDX中设置应用程序窗口的位置?
- 4. 有没有办法pushState()在Facebook画布的父窗口?
- 5. 在gtk滚动窗口中获取鼠标位置
- 6. 有没有办法在Ghost.py中设置窗口大小?
- 7. 有没有什么办法在UITextView中设置滚动条的位置
- 8. 有没有办法在C#中锁定窗体的位置?
- 9. 在yui中获取窗口滚动或scrollY位置
- 10. 有没有什么办法可以从Facebook Graph API获取Facebook页面的位置或区域?
- 11. 图形API没有从Android SDK中的Facebook SDK获取位置
- 12. 有没有办法通过API获取Google地图共享位置?
- 13. 有没有办法通过Google API获取用户的“家”和“工作”位置?
- 14. 有没有办法在屏幕上指定R gwidget窗口的位置?
- 15. 有没有办法在滚动事件之前采取行动?
- 16. 有没有办法在c#中动态获取方法名?
- 17. jQuery - 防止滚动元素当窗口滚动没有固定位置
- 18. 有没有办法维护滚动条的位置在页面刷新(无Javascript)?
- 19. 有没有办法确定用户点击/拖动滚动条上的位置?
- 20. 有没有办法在我的活动窗口更改时放置断点?
- 21. 有什么办法可以在父窗口中获取PopUp窗口的网址
- 22. WPF有没有什么办法在SizeChanged事件中获取以前的位置?
- 23. 获取滚动窗口
- 24. 有没有办法设置窗口让控制台窗口打开?
- 25. 有没有办法手动获取地理位置数据进行测试?
- 26. JavaScript获取滚动的窗口X/Y位置
- 27. 有没有办法设置绘图窗口的默认大小?
- 28. 有没有办法使用本机C++从WPF窗口捕获位图?
- 29. 有没有办法获得窗口的“进度”值?
- 30. 有没有办法获得一个窗口的GraphicsPath?