-如何显示参考页面的整体高度?

时间:2020-03-05 18:52:05  来源:igfitidea点击:

我有一个要嵌入到我们公司CMS中的应用程序。做到这一点的唯一方法(被告知)是将其加载到<iframe>中。

简单:只需将"高度"和"宽度"设置为" 100%"!除此以外,它不起作用。

我确实发现了将frameborder设置为0的信息,因此它至少看起来像是网站的一部分,但我宁愿不要在已经拥有一个页面的页面中放置一个丑陋的滚动条。

我们知道执行此操作的任何技巧吗?

编辑:我想我需要澄清一下我的问题:

  • 公司CMS在整个网站上显示绒毛和东西
  • 通过CMS创建的大多数页面
  • 我的应用程序不是,但是他们会让我将其嵌入到<iframe>中
  • 我无法控制iframe,因此任何解决方案都必须在引用的页面上运行(根据iframe标签的src属性)
  • CMS会显示页脚,因此将高度设置为100万像素不是一个好主意

我可以从引用页面访问父页面DOM吗?这可能会有所帮助,但我可以看到有些人可能不希望这样。

该技术似乎可行(从多个来源收集,但受公认答案的链接启发:

在父文档中:

<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的限制,如果父级和子级在同一个域中,则此方法才有效...

解决方案

回答

我们可以只使用脚本语言将页面包含在父页面中,否则,我们可能想尝试以下javascript方法之一:

http://brondsema.net/blog/index.php/2007/06/06/100_height_iframe
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_22840093.html

回答

我可能在这里丢失了一些东西,但是将scrolling = no作为属性添加到iframe标签通常会摆脱滚动条。

回答

如果iframe与包含页面的托管服务器相同,则可以通过javascript访问它。

有很多建议的方法可以将iframe设置为内容的全部高度,每种方法的成功程度各不相同。谷歌针对这个问题表明,这是很常见的一种,没有一个真正的,一刀切的共识解决方案,我怕!

一些人报告说此脚本可以解决问题,但是可能需要针对特定情况进行一些修改(同样,假设iframe和父页面位于同一域中)。