如何查找iframe中某一点与iframe文档顶部之间的高度

How to find the height between a certain point in an iframe and the top of the iframe document

本文关键字:iframe 顶部 文档 之间 高度 一点 何查找 查找      更新时间:2023-09-26

我在不同域的父窗口中加载了一个iframe,我想找到iframe中任何点与iframe文档高度之间的像素高度差。我所说的iframe文档高度不仅仅是指iframe的顶部,而是指在iframe内部加载的文档的顶部(如果在ifame内部向下滚动,则会有所不同)。

我希望能够在父窗口的html中的脚本中实现这一点。由于上述原因,使用$("iframe").offset().top查找iframe文档的顶部不起作用(我不想要iframe的顶部)。有没有一种方法可以获得加载在iframe内部的文档DOM元素的引用,这对我有帮助吗?

如果iframe在不同的域上,则不能执行此操作。需要访问contentDocument才能获得scrollTop位置。虽然很明显知道文档滚动到哪里并不会损害用户的安全性,但在另一个域上访问contentDocument是一个彻底的禁忌。

现在,如果你的域上有一个PHP文件,它代理了另一个域的页面,那就另当别论了。如果你只访问一个没有链接或表单的页面,这样的方法将很容易实现:

<?php echo file_get_contents("http://example.com/"); ?>

而且。。。

<iframe src="myproxy.php" id="iframe" />

现在您可以访问contentDocument,因此可以访问其内容:

document.getElementById('iframe').contentDocument.documentElement.scrollTop
// contentDocument.body.scrollTop in some browsers - get both and add them together

如果有联系和/或形式,你的生活会更加困难。首先,您必须重写所有URL以通过代理脚本,然后您必须使用套接字函数或cURL将POST表单数据发送到其他服务器。。。如果你只有一页的话,那就容易多了。