7

如何使 iframe 适合 100% 的内容(使用 JavaScript)的问题已经在论坛上得到解答……仅适用于显示来自同一域的内容的 iframe

我的问题:当 iframe src 属性用于包含框架的页面域之外的页面时,是否可以调整 iframe 的大小以适应内容?围绕跨站点脚本的浏览器安全功能阻止我访问 iframe 的文档对象。

我正在寻找任何创造性的解决方案。我的一个想法是以某种方式检测滚动条在 iframe 上可见,并逐渐增加高度直到它们不可见。不幸的是,我也找不到任何检测可见滚动条的方法。想法?

请注意,我正在寻找客户端解决方案。

回应:


戴夫

问题仍然存在——我不提前知道远程文档的高度,所以我无法从数据库或查询字符串值中设置它。


杜软

CSS 中 iframe 上的 100% 不会将其设置为iframe内容的 100%,而是相对于页面或包含元素(即 div 或其他内容)。

4

5 回答 5

1

当 iframe src 属性适用于包含框架的页面域之外的页面时,是否可以调整 iframe 的大小以适应内容?

可以绕过跨站点限制并将 iframe 设置为其内容的高度,但让它工作可能有点尴尬。

该解决方案涉及通过让 iframe 内容本身 iframe 与父页面在同一服务器上的页面来解决安全模型,它可以与之通信。我在此之前已经回答了一个与此类似的问题其中详细介绍了所有设置的来龙去脉。

对所描述方法的警告是,您必须有方法将 iframe 内容获取到自身 iframe 父服务器上的页面。当 iframed 内容作为站点之间商定的合作伙伴关系的一部分存在时,这通常是可以实现的,但 YMMV。

于 2009-02-05T13:35:45.390 回答
1

(我对类似问题的回答

由于浏览器的安全模型,如果不对正在 iframe 的页面进行一些控制,就不可能做到这一点。如果可能,那将是一个安全问题,必须加以解决。

尽管在嵌入页面时让嵌入站点知道第三方网页的高度似乎无害,但这可能会将浏览器用户想要保密的信息泄露给嵌入站点。例如,http://www.facebook.com/根据您是否登录而呈现不同,所以如果我的网站可以计算出高度,<iframe src="http://www.facebook.com/">那么我可以计算出您是否是 facebook 用户,某事你可能不想让我知道。

信息泄漏类似于浏览器供应商必须堵塞的臭名昭著的CSS 历史泄漏。

于 2010-11-04T18:44:15.050 回答
0

听起来您正在尝试解决出于充分理由而实施的安全功能...

调整大小是否必须通过脚本?您可以重定向到 iframe 大小取自查询字符串、数据库或配置文件等的页面。

于 2009-01-21T19:52:51.253 回答
0

这是理论上的,因为我没有测试过:

file_get_content()1) PHP 使用或使用 CURL将远程页面保存到本地 html 文件中 。2) Javascript 将本地文件加载到 iframe - 它现在是本地的,安全问题不适用。

如果有 javascript vars 或 Session vars(无法从远程内容中提取),您至少可以使用此技术查询本地文件的文档高度,相应地设置 iframe,然后将远程 URL 加载到调整大小的 iframe 中。

Cavat:您无法知道远程页面中页面更改的 URL,因此您只能在第一页上使用此技术。如果远程页面的高度都相同,这没问题。

于 2010-11-02T12:58:02.437 回答
0

不是最好的解决方案,但您可以尝试:

编写 iframe 的 javascript,在 iframe 应用程序中将 url #h700 中的当前高度设置为 700px 等;然后使用循环在主机站点“在 javascript”中侦听该更改以读取 src="url#h700" 并以此设置 iframe 的高度。

于 2011-10-04T01:04:23.573 回答