是否有一种方法可以在Facebook API中获得窗口滚动位置
Is there a way to get the window scroll position in Facebook API?
在FB。Canvas API有方法来获得滚动顶部,偏移顶部和客户端高度(通过getPageInfo()),但我需要一种方法来找到最顶部的窗口滚动位置,这样我就可以确定我需要对客户端可见的区域是否在视图中。用户将在一个表单中点击,它比大多数屏幕都高。我需要确保表单项是可见的。
似乎getPageInfo()。属性和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;
}
通过名称在线搜索其他函数,您将找到其余的代码。
相同的一般方法作为在定位方面的答案一旦你有你的滚动位置,但我认为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/相关文章:
- 使用Facebook live API创建实时视频对象时的隐私设置
- Facebook Javascript API:'/我/相册'不适用于其他用户
- 使用FB.ui的Facebook Feed对话给出API错误191
- 使用api在facebook页面上发布图片或状态
- Backbone/Facebook API未按预期工作
- 实施Facebook's无用户身份验证的Graph API
- 使用FB.api在Facebook上发布消息
- 骨干Facebook API函数
- 如何将Facebook Graph API响应存储为Javascript数组
- 来自facebook图形API的响应中出错
- Facebook网络数据API和D3.JS
- Facebook API过滤用户活动,只显示指定的好友
- Facebook JavaScript API 是否适合创建用户帐户
- Facebook API:确定FB.ui发送方法的收件人数量
- 如何使用访问令牌与Facebook Graph API
- 使用Facebook api获取专辑封面
- 使用Facebook的javascript api发布多部分/表单数据编码的图像
- Facebook评论API - Facebook所说的“评论框背后”是什么意思
- 使用Graph API Facebook获取视频源URL
- 如何解析json在graph api facebook从http get