我会马上声明,我知道由于安全限制这是不可能的,但这是我的情况,我正在寻找一些我可能没有考虑过的创造性解决方法。
我有一个显示图像缩略图的网站。当用户单击缩略图时,我使用 jQuery 覆盖控件 (FaceBox) 在弹出窗口中显示全尺寸图像。弹出窗口的顶部始终位于距页面顶部 20 像素的位置,因此需要读取页面的 scrollTop() 值。
当我直接访问我的网站时,此功能非常有用。但是,当我从IFRAME 中的 Facebook Canvas 应用程序加载站点时,弹出窗口的定位代码会中断。我已经关闭了画布的滚动条,并正在使用 FB.Canvas.setSize(...) 手动通知父页面我的 IFRAME 中的高度变化。由于不允许访问父级中的 ScrollTop() 值,因此我的解决方法是将叠加层的顶部相对于源缩略图的顶部定位。这使叠加层保持在靠近源的位置,但这并不理想,尤其是在缩略图靠近视口底部的情况下。
有什么方法可以将弹出窗口从 IFRAME 顶部定位 20 像素,但以某种方式考虑到父窗口的(禁止)ScrollTop() 位置?
这似乎是一个相当普遍的情况;我希望 Facebook 有计划在未来解决这个问题。FB.Canvas.getPageInfo对象看起来是一个很好的候选对象。它有一个 scrollTop 成员,但它是为 Canvas 而不是父框架的,如果滚动条被关闭,这个值总是为零。