我可以看到这个问题已被多次提出,但没有一个建议的解决方案似乎适用于我正在构建的站点,因此我正在重新打开该线程。我试图根据内容的高度来设置iframe的大小。包含iframe的页面和它的源页面都存在于同一个域中。动态调整iframe的大小
我在以下每个线程试图提出的解决方案:
我认为,解决上述不工作,因为当提及身体.clientHeight制作完成后,浏览器并未真正确定文档的高度。
这里是我使用的代码:
var ifmBlue = document.getElementById("ifmBlue");
ifmBlue.onload = resizeIframe;
function resizeIframe()
{
var ifmBlue = document.getElementById("ifmBluePill");
var ifmDiv = ifmBlue.contentDocument.getElementById("main");
var height = ifmDiv.clientHeight;
ifmBlue.style.height = (ifmBlue.contentDocument.body.scrollHeight || ifmBlue.contentDocument.body.offsetHeight || ifmBlue.contentDocument.body.parentNode.clientHeight || height || 500) + 5 + 'px';
}
如果我用火调试调试脚本时,iframe.contentDocument的主要div的客户高度为0。另外,body.offsetHieght,&体。 scrollHeight是0.然而,在脚本运行完成后,如果我检查HTML iframe元素的DOM(使用fire debug),我可以看到body的clientHeight是456,内部div的clientHeight是742.这让我相信这些值在iframe.onload被触发时尚未设置。所以,根据上面的每个线程,我将代码移动到iframe源页面的body.onload事件处理程序中。该解决方案也没有工作。
任何帮助,你可以提供非常感谢。
感谢,
CJ
有脚本的更新版本在这里:http://www.dynamicdrive.com/dynamicindex17/iframessi2.htm – 2010-03-16 19:52:19