我在不同域的父窗口中加载了iframe,我想找到iframe中任意点与iframe文档高度之间的像素高度差。根据iframe文档高度,我并不只是iframe的顶部,而是iframe内部加载的文档的顶部(如果在iframe中向下滚动,则不同)。
我希望能够在父窗口的html脚本中执行此操作。使用$("iframe").offset().top
查找iframe文档的顶部不会出于上述原因(我不想要iframe的顶部)。有没有办法获取在iframe中加载的文档DOM元素的引用,这对我有帮助吗?
答案 0 :(得分:0)
如果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
表单数据发送到其他服务器...它只是更容易如果你只有一页。