【发布时间】:2010-09-08 16:22:57
【问题描述】:
我有一个应用程序想嵌入到我们公司的 CMS 中。这样做的唯一方法(有人告诉我)是将其加载到 <iframe> 中。
简单:只需将height 和width 设置为100%!除了,它不起作用。
我确实发现了将frameborder 设置为0,所以它至少看起来 像网站的一部分,但我不希望里面有丑陋的滚动条 一个已经有的页面。
你知道有什么技巧可以做到这一点吗?
编辑:我想我需要稍微澄清一下我的问题:
- 公司 CMS 显示我们整个网站的绒毛和东西
- 通过 CMS 创建的大多数页面
- 我的应用程序不是,但他们会让我将其嵌入到
<iframe> - 我无法控制
iframe,因此任何解决方案都必须在引用的页面上运行(根据iframe标记的src属性) - CMS 显示页脚,因此将高度设置为 100 万像素不是一个好主意
我可以从引用的页面访问父页面 DOM 吗?这可能会有所帮助,但我可以看到有些人可能不希望这成为可能......
这种技术似乎有效(gleaned 来自多个来源,但受到公认答案中的link 的启发:
在父文档中:
<iframe id="MyIFRAME" name="MyIFRAME"
src="http://localhost/child.html"
scrolling="auto" width="100%" frameborder="0">
no iframes supported...
</iframe>
在孩子中:
<!-- ... -->
<body>
<script type="text/javascript">
function resizeIframe() {
var docHeight;
if (typeof document.height != 'undefined') {
docHeight = document.height;
}
else if (document.compatMode && document.compatMode != 'BackCompat') {
docHeight = document.documentElement.scrollHeight;
}
else if (document.body
&& typeof document.body.scrollHeight != 'undefined') {
docHeight = document.body.scrollHeight;
}
// magic number: suppress generation of scrollbars...
docHeight += 20;
parent.document.getElementById('MyIFRAME').style.height = docHeight + "px";
}
parent.document.getElementById('MyIFRAME').onload = resizeIframe;
parent.window.onresize = resizeIframe;
</script>
</body>
顺便说一句:这只有在父子节点在同一个域中时才有效,因为 JavaScript 出于安全原因的限制...
【问题讨论】: