セキュリティ上の制限のためにこれが不可能であることはわかっていますが、これが私のシナリオであり、私が考慮していなかった可能性のあるいくつかの創造的な回避策を探しています。
画像のサムネイルを表示するWebサイトがあります。ユーザーがサムネイルをクリックすると、jQueryオーバーレイコントロール(FaceBox)を使用して、フルサイズの画像をポップアップで表示します。ポップアップウィンドウの上部は常にページの上部から20ピクセルの位置にあるため、ページのscrollTop()値を読み取る必要があります。
この機能は、自分のサイトに直接アクセスするときにうまく機能します。しかし、Facebook CanvasアプリケーションからIFRAMEでサイトを読み込むと、ポップアップのポジショニングコードが壊れます。Canvasのスクロールバーをオフにし、FB.Canvas.setSize(...)を使用して、IFRAMEの高さの変更を親ページに手動で通知しています。親のScrollTop()値にアクセスすることは許可されていないため、回避策は、ソースサムネイルの上部を基準にしてオーバーレイの上部を配置することでした。これにより、オーバーレイがソースに近くなりますが、特にサムネイルがビューポートの下部に近い場合は、理想的とは言えません。
ポップアップをIFRAMEの上部から20ピクセルの位置に配置する方法はありますが、親ウィンドウの(禁止されている)ScrollTop()の場所を考慮に入れる方法はありますか?
これはかなり一般的なシナリオのようです。Facebookが将来これに対処する計画があることを願っています。FB.Canvas.getPageInfoオブジェクトは、これに適した候補のように見えます。これにはscrollTopメンバーがありますが、これは親フレームではなくCanvas用であり、スクロールバーがオフになっている場合、この値は常にゼロです。