在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中隐藏滚动指标?