根据内容高度调整iframe高度

chi*_*may 69 javascript php ajax iframe

我在我的网站上打开我的博客页面.问题是我可以给iframe一个宽度,但高度应该是动态的,这样iframe中就没有滚动条了,它看起来像一个页面......

我已经尝试了各种JavaScript代码来计算内容的高度,但是所有这些代码都提供了访问被拒绝权限错误,没有用.

<iframe src="http://bagtheplanet.blogspot.com/" name="ifrm" id="ifrm" width="1024px" ></iframe>
Run Code Online (Sandbox Code Playgroud)

我们可以使用Ajax来计算高度或者使用PHP吗?

Sch*_*kie 60

直接回答你的两个子问题:不,你不能用Ajax做这个,也不能用PHP计算它.

我过去所做的是使用来自iframe页面的触发器window.onload(不是domready,因为加载图像可能需要一段时间)才能将页面的主体高度传递给父页面.

<body onload='parent.resizeIframe(document.body.scrollHeight)'>
Run Code Online (Sandbox Code Playgroud)

然后parent.resizeIframe看起来像这样:

function resizeIframe(newHeight)
{
    document.getElementById('blogIframe').style.height = parseInt(newHeight,10) + 10 + 'px';
}
Run Code Online (Sandbox Code Playgroud)

Et瞧,你有一个强大的缩放器,一旦页面完全呈现就会触发,没有讨厌contentdocumentcontentWindow小提琴:)

当然,现在人们会首先看到你的iframe处于默认高度,但是这可以通过首先隐藏你的iframe并显示"加载"图像来轻松处理.然后,当resizeIframe函数启动时,在其中放置两条额外的行来隐藏加载图像,并显示该伪造Ajax外观的iframe.

当然,这只能在同一个域中运行,所以你可能想要一个代理PHP脚本来嵌入这些东西,一旦你去那里,你也可以用PHP直接将你的博客的RSS源直接嵌入你的网站.


小智 8

你可以用JavaScript做到这一点.

document.getElementById('foo').height = document.getElementById('foo').contentWindow.document.body.scrollHeight + "px";
Run Code Online (Sandbox Code Playgroud)


Gar*_*een -3

scrolling=no尝试在 iframe 标记上使用属性。Mozilla 还有一个overflow-xCSSoverflow-y属性,您可以研究一下。

至于高度,你也可以尝试height=100%使用iframe标签。