获取相对于窗口的IFRAME位置

时间:2012-08-20 17:45:19

标签: javascript iframe

我在iframe中运行javascript代码,该iframe是从父窗口以外的其他域提供的。由于安全问题(跨域),我无法轻易检测到窗口内框架的位置。

但是,我发现如果我将一个事件附加到框架中的window.mousemove,我可以得到窗口的ScreenX / Y和事件的ScreenX / Y,这让我很好地了解了浏览器窗口上部的偏移量左角对我来说足够接近 - 我只是想检测框架内是否有多少以及有多少框架。

所以我认为我可以在iframe中实用地激活window.mousemove(),但是不会填充event.ScreenX / Y.

所以我的问题是:

1)当帧位于不同的域时,如何从窗口获取iframe的绝对偏移量 2)或者 - 同样好 - 如何实际触发已填充ScreenX / Y的事件?

1 个答案:

答案 0 :(得分:0)

这样的事情对我有用,虽然我不确定这是不是你要求的。您可能仍需要考虑以下两件事:

  1. 从浏览器滚动偏移量,但我认为您可以使用此值。
  2. 浏览器标题差异,我当前获得的值不会扣除浏览器标题使用的高度,也不会扣除左侧的任何填充。有几种方法可以做到这一点。

    a)创建一个浏览器列表,并自动扣除关于标头大小的最佳猜测。 b)使用innerHeight进行一些数学计算,但是你仍然需要弄清楚窗口状态栏(或unix或max)对浏览器标题大小的影响有多大。

  3. 无论如何这里是我使用的代码:

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