获取IFRAME相对于窗口的位置

3
我有一段运行在iframe内的javascript代码,该iframe来自于与父窗口不同的域。由于安全问题(跨域),我无法轻易地检测窗口内的frame位置。
然而,我发现如果我将事件附加到窗口中的window.mousemove,我可以获得窗口的ScreenX/Y和事件的ScreenX/Y,这给了我一个很好的想法,即从浏览器窗口的左上角获取偏移量,这足够接近 - 我只是要检测frame是否在视野范围内,以及它对应的偏移量。
所以,我认为我可以在iframe中实际触发window.mousemove()事件,但是event.ScreenX/Y没有被填充。
我的问题是:
1)当frame位于不同域时,如何获取iframe的绝对偏移量
2)或者 - 同样有效 - 如何实现填充ScreenX/Y的事件的实际触发

也许 http://www.quirksmode.org/js/findpos.html 可以帮助。 - Alexandre Khoury
1个回答

0

我使用的代码类似于这个,但我不确定这是否正是您要求的。 您仍然需要考虑两件事:

  1. 浏览器滚动偏移量,但我认为您可以使用此值。
  2. 浏览器标题栏差异,我当前获取的值没有扣除浏览器标题栏使用的高度,也没有任何左边的填充。 但是有几种方法可以解决这个问题。

    a)创建一个浏览器列表,并自动推算出标题栏的大致大小。 b)使用innerHeight做一些数学计算,但您仍然需要弄清楚窗口状态栏(或unix或max)与浏览器标题栏大小之间的差异。

无论如何,这是我使用的代码:

<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>

不满足问题:"...来自与父级不同域的iframe" - powlette

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接