如何获取iframe内部内容的滚动位置

Foa*_*Guy 6 html javascript iframe jquery scroll

我有一个HTML页面,其中包含一个iframe,可加载任意页面。

<iframe id="siteframe" style="width: 400px; height: 400px;" src="http://www.cnn.com"></iframe>
Run Code Online (Sandbox Code Playgroud)

我希望能够获得页面的滚动位置的JavaScript / jQuery的iframe中。在html / js方面,我还是有点绿色,但是我已经尝试了使用scrollTop和scrollLeft的几种不同形式,但是没有成功。这是一个无效的:

write($("#siteframe").contents().scrollLeft() + ", " + $("#siteframe").contents().scrollTop());
Run Code Online (Sandbox Code Playgroud)

这个代码什么也不会写(write是一种只附加到屏幕上文本的方法)。

如果我这样删除.contents()

write($("#siteframe").scrollLeft() + ", " + $("#siteframe").scrollTop());
Run Code Online (Sandbox Code Playgroud)

它至少会在屏幕上写入一些内容,但是无论iframe中实际的滚动位置在哪里,它始终为0,0。

在javascript中获取iframe中内容的x,y位置的正确方法是什么,以便我的外部页面(包含iframe)可以使用它?

ski*_*ulk 6

根据这篇堆栈溢出帖子,“结论是 iframe 内的任何内容都无法访问,甚至是在我的域上呈现的滚动条。” 讨论很广泛。除非您有权访问该域,否则根本不可能从跨域 iframe 获取信息。

这是我失败的测试代码,以防有人想玩它:

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<script>
function report() {
    var frame_top = $('#siteframe').contents().find('body').scrollTop();
    alert(frame_top);
}
</script>
<iframe id="siteframe" name="siteframe" style="width: 400px; height: 400px;" src="http://en.wikipedia.org/wiki/Hello_world"></iframe><br />
<button onclick="report()">Get Coords</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)