Facebook Canvas IFRAME需要获取父页面的ScrollTop()值

Arm*_*nco 0 iframe facebook overlay canvas scrolltop

我马上说,我知道由于安全限制,这是不可能的,但这是我的情况,我正在寻找一些我可能没有考虑过的创造性解决方法.

我有一个显示图像缩略图的网站.当用户点击缩略图时,我使用jQuery叠加控件(FaceBox)在弹出窗口中显示完整大小的图像.弹出窗口的顶部始终位于距页面顶部20个像素的位置,因此需要读取页面的scrollTop()值.

当我直接访问我的网站时,此功能非常有用.但是当我从IFRAME中Facebook Canvas应用程序加载网站时,弹出窗口的定位代码会中断.我已关闭Canvas的滚动条,并使用FB.Canvas.setSize(...)手动通知我的IFRAME中高度更改的父页面.由于我不允许访问父级中的ScrollTop()值,因此我的解决方法是将叠加层的顶部相对于源缩略图的顶部进行定位.这使叠加层保持靠近源,但它并不理想,特别是如果缩略图靠近视口的底部.

有什么方法可以将弹出窗口从IFRAME的顶部放置20个像素,但不知何故考虑到父窗口的(禁止的)ScrollTop()位置?

这似乎是一种相当常见的情况; 我希望Facebook计划在未来解决这个问题.该FB.Canvas.getPageInfo物体看起来像一个很好的候选人这一点.它有一个scrollTop成员,但它适用于Canvas,而不是父框架,如果关闭滚动条,则此值始终为零.

Arm*_*nco 5

因此,事实证明本机FB.Canvas.getPageInfo()方法正是我想要它一直做的事情.我添加了一些代码从我的Facebook应用程序(http://apps.facebook.com/ipredikt)中秘密调用它,它返回了我需要正确定位弹出窗口和叠加层的值.下次我们将新位推送到Azure时,我将更新我的定位代码以考虑来自FB.Canvas.getPageInfo()的值.