ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【html】iframe 的高度自适应

2020-05-14 19:03:34  阅读:311  来源: 互联网

标签:body 浏览器 documentElement 高度 适应 html iframe document scrollHeight


一、demo

<!DOCTYPE html>
<html lang="sv">

<head>
    <meta charset="utf-8" />
    <title>Iframe height demo</title>
    <style media="screen,print">
        #body {
            width: 70em;
            max-width: 100%;
            margin: 0 auto;
        }

        iframe {
            width: 100%;
            margin: 0 0 1em;
            border: 0;
        }
    </style>
    <script>
        /*
         * When the iframe is on a different subdomain, uncomment the following line
         * and change "example.com" to your domain.
         */
        // document.domain = "example.com";
        function setIframeHeight(iframe) {
            if (iframe) {
                var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
                if (iframeWin.document.body) {
                    iframe.height = iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
                    console.log(iframeWin.document.documentElement.scrollHeight , iframeWin.document.body.scrollHeight);
                }
            }
        };
    </script>
</head>

<body>
    <div id="body">
        <h1>Iframe height demo</h1>
        <h2><code>iframe</code> <strong>with</strong> height adjustment</h2>
        <iframe src="iframe高度自适应-src.html"
            frameborder="0"
            id="external-frame" onl oad="setIframeHeight(this)"></iframe>
    </div>
</body>

</html>
View Code

二、扩展一:iframe自适应高度 document.body.scrollHeight取值不对

浏览器所有内容高度:  浏览器整个框架的高度,包括滚动条卷去部分+可视部分+底部隐藏部分的高度总和。

浏览器滚动部分高度:   滚动条卷去部分高度即可视顶端距离整个对象顶端的高度。

1. 适配3wschool,即DTD声明了

1-1. IE浏览器

document.documentElement.scrollHeight——浏览器所有内容高度

document.body.scrollHeight——浏览器所有内容高度
document.documentElement.scrollTop——浏览器滚动部分高度
document.body.scrollTop——始终为0
document.documentElement.clientHeight——浏览器可视部分高度
document.body.clientHeight——浏览器所有内容高度

1-2. 火狐浏览器firefox

document.documentElement.scrollHeight——浏览器所有内容高度 

document.body.scrollHeight——浏览器所有内容高度
document.documentElement.scrollTop——浏览器滚动部分高度
document.body.scrollTop——始终为0
document.documentElement.clientHeight——浏览器可视部分高度
document.body.clientHeight——浏览器所有内容高度

1-3. Chrome谷歌浏览器

document.documentElement.scrollHeight——浏览器所有内容高度 

document.body.scrollHeight——浏览器所有内容高度
document.documentElement.scrollTop——始终为0
document.body.scrollTop——浏览器滚动部分高度
document.documentElement.clientHeight——浏览器可视部分高度
document.body.clientHeight——浏览器所有内容高度

——————————————————————————————————————————————

 

2.未完全适配3wschool,即DTD声明了

2-1. IE浏览器

document.documentElement.scrollHeight——浏览器可视部分高度

document.body.scrollHeight——浏览器所有内容高度 
document.documentElement.scrollTop——始终为0
document.body.scrollTop——浏览器滚动部分高度
document.documentElement.clientHeight——始终为0
document.body.clientHeight——浏览器可视部分高度

2-2. 火狐浏览器firefox

document.documentElement.scrollHeight——浏览器可视部分高度 

document.body.scrollHeight——浏览器所有内容高度
document.documentElement.scrollTop——始终为0
document.body.scrollTop——浏览器滚动部分高度
document.documentElement.clientHeight——浏览器所有内容高度
document.body.clientHeight——浏览器可视部分高度

2-3. Chrome谷歌浏览器

document.documentElement.scrollHeight——浏览器可视部分高度

document.body.scrollHeight——浏览器所有内容高度
document.documentElement.scrollTop——始终为0
document.body.scrollTop——浏览器滚动部分高度
document.documentElement.clientHeight——浏览器所有内容高度
document.body.clientHeight——浏览器可视部分高度

从上面的情况可以得出

1、document.documentElement.scrollTop和document.body.scrollTop始终有一个为0,所以可以用这两个的和来求scrollTop

2、scrollHeight、clientHeight 在DTD已声明的情况下用documentElement,未声明的情况下用body

PS:可以使用 document.compatMode 可以用来判断是否声明了DTD,得值进行判断。

我们则没有使用document.compatMode来判断,而是直接

 var bodyHeight=document.body.scrollHeight==0?document.documentElement.scrollHeight:document.body.scrollHeight;

 var height = bodyHeight -70;

三、扩展二:Frame/IFrame contentWindow 属性

1. 定义和用法

contentDocument 属性能够以 HTML 对象来返回 iframe 中的文档。

可以通过所有标准的 DOM 方法来处理被返回的对象。

2. 语法

frameObject.contentWindow

或者

iframeObject.contentWindow

3. 浏览器支持

Internet ExplorerFirefoxOperaGoogle ChromeSafari

所有主要浏览器都支持 contentWindow 属性

4. demo:

https://www.runoob.com/try/try.php?filename=tryjsref_iframe_contentdocument

相关资料:

  

标签:body,浏览器,documentElement,高度,适应,html,iframe,document,scrollHeight
来源: https://www.cnblogs.com/websmile/p/12889310.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有