【问题标题】:Get IFRAME position relative to the window获取 IFRAME 相对于窗口的位置
【发布时间】:2012-08-20 17:45:18
【问题描述】:

我在 iframe 中运行 javascript 代码,该 iframe 来自与父窗口不同的域。由于安全问题(跨域),我无法轻松检测框架在窗口内的位置。

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

所以我认为我可以务实地在 iframe 中触发 window.mousemove(),但是 event.ScreenX/Y 不会被填充。

所以我的问题是:

1) 当框架位于不同域时,如何从窗口获取 iframe 的绝对偏移量 2) 或者——同样好——我如何务实地触发一个填充了 ScreenX/Y 的事件?

【问题讨论】:

标签: javascript iframe


【解决方案1】:

这样的东西对我有用,但我不确定这是否正是你所要求的。您可能仍需要考虑两件事:

  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 来自与父域不同的域”
猜你喜欢
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2011-01-27
  • 2017-09-06
相关资源
最近更新 更多