3

親ウィンドウとは異なるドメインから提供される iframe 内で JavaScript コードを実行しています。セキュリティ上の懸念 (クロス ドメイン) のため、ウィンドウ内のフレームの位置を簡単に検出できません。

ただし、フレーム内の window.mousemove にイベントをアタッチすると、ウィンドウの ScreenX/Y とイベントの ScreenX/Y を取得できることがわかりました。これにより、ブラウザ ウィンドウの左上隅からのオフセットがよくわかります。私にとっては十分に近いです-フレームのどれだけがビュー内にあるかどうかを検出したいだけです。

だから私は実際に iframe で window.mousemove() を起動できると思ったが、その後 event.ScreenX/Y は取り込まれない。

だから私の質問は次のいずれかです:

1) フレームが別のドメインにある場合、ウィンドウから iframe の絶対オフセットを取得するにはどうすればよいですか?

4

1 に答える 1

0

これがまさにあなたが求めていたものであるかどうかはわかりませんが、このようなものは私にとってはうまくいきます。あなたがまだ説明する必要があるかもしれない2つの事柄があります:

  1. ブラウザからのスクロールオフセットですが、この値を使用できると思います。
  2. ブラウザヘッダーの違い、現在取得している値は、ブラウザヘッダーで使用されている高さや、左側のパディングを差し引いていません。ただし、これを行う方法はいくつかあります。

    a)ブラウザのリストを作成し、ヘッダーの大きさに関する最良の推測を自動的に差し引きます。b)innerHeightを使用して少し計算しますが、それでも、Windowsのステータスバー(またはUNIXまたは最大)とブラウザーのヘッダーサイズの大きさを把握する必要があります。

とにかくここに私が使用したコードがあります:

<html>
    <head>
        <title>iframe title</title>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script type="text/javascript">
        jQuery(document).ready(function(){
           $(document).mousemove(function(e){
                var x = e.screenX - e.pageX - window.screenX;
                var y = e.screenY - e.pageY - window.screenY;
              $('#status').html(x +', ' + y );
           }); 
        })
        </script>       
    </head>
    <body id="doc">
        <h2 id="status">0, 0</h2>
    </body>
</html>
于 2012-09-21T19:53:45.370 に答える