通过javascript动态获取iframe的内容高度

时间:2011-06-30 12:52:14

标签: javascript iframe scroll

首先,我在阅读并应用了很多JS我发布此问题之后,就此主题进行了研究,

我正在尝试应用iframe,其中我从其他域获取内容。

我试图在iframe内容的滚动高度的基础上设置iframe高度,但未能这样做

我试图使用iframe的onload事件但是失败了......

请帮助我,我需要动态设置任何必要的iframe的高度..

如果代码将在Javascript中提供,对我有帮助

提前致谢

4 个答案:

答案 0 :(得分:2)

出于安全原因,无法与其他域中的框架进行交互。

这包括衡量其内容。

答案 1 :(得分:1)

@SLaks是正确的。如果iframe内容位于其他域中,则无法直接访问其内容。

你可以做什么(以及我最近刚刚做的)是设置一个代理,通过cURL拉取内容(在PHP中,但我确定任何服务器端语言都有相同的东西)。 iframe内容然后在同一页面上,您可以通过以下方式访问它的高度:

var _iframeHeight = $('#iframe').contents().find('body').height();
$('#iframe').height(_iframeHeight);

我也忘了提及(@SLaks感谢提醒)您必须检查所有脚本/样式/图像标签并检查/添加绝对URL。代理可能会变得相当棘手,但它会完成它。

答案 2 :(得分:1)

如果您能够更改iframe中的内容,例如,如果您是作者或可以联系该iframe内容的作者,则可以设置双iframe技巧,将iframe的高度发送到您的主页。

以下是如何实现的目标:

  1. 在您的主页(AAA.com/mainpage.htm)中放置了一个iframe(BBB.com/mainframe.htm)。
  2. 与主页一起创建另一个页面(AAA.com/heightproxy.htm
  3. 您认为BBB.com/mainframe.htm会在AAA.com/heightproxy.htm内部创建一个不可见的iframe。

    结果: BBB.com/mainframe.htm on on onload事件可以加载iframe AAA.com/heightproxy.htm,并在URL中添加一些参数。例如,它可以将新的高度/宽度放入参数中。此外,AAA.com/heightproxy.htm可以访问AAA.com/mainpage.htm中的所有JS功能 - 因为它们位于相同的浏览器窗口中并共享相同的域。这样它就可以将收到的宽度和高度重定向到主页。

  4. 免责声明:只有在您可以修改需要包含的iframe来源时才能使用此技巧。

答案 3 :(得分:0)

如果从不同的网址加载内容,则无法与iFrame交互主页(您可以从iframe测量高度,但无法将其传递到主页)。 可以通过简单的代理脚本加载内容来覆盖它。