Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果控制台中的Iframe clientHeight不同,则需要获得真实的Iframe车身高度(angular2)_Angular_Iframe_Height - Fatal编程技术网

如果控制台中的Iframe clientHeight不同,则需要获得真实的Iframe车身高度(angular2)

如果控制台中的Iframe clientHeight不同,则需要获得真实的Iframe车身高度(angular2),angular,iframe,height,Angular,Iframe,Height,普朗克: 当我通过ElementRef导航时,我得到以下高度: 当我在浏览器控制台中返回值时,我得到了一个错误的值 目标:将iframe调整为iframes内容的真实高度 问题:iframes身体的实际高度与我得到的不同。我做错了什么 多谢各位 获取iFrame的准确高度并不像它应该的那样简单,因为您可以选择六种不同的属性进行检查,但没有一种可以给出一个持续正确的答案。我提出的最简单的解决方案是这个函数,只要不使用CSS溢出body标记,它就可以工作 function getIFrameHe

普朗克:

当我通过ElementRef导航时,我得到以下高度:

当我在浏览器控制台中返回值时,我得到了一个错误的值

目标:将iframe调整为iframes内容的真实高度

问题:iframes身体的实际高度与我得到的不同。我做错了什么


多谢各位

获取iFrame的准确高度并不像它应该的那样简单,因为您可以选择六种不同的属性进行检查,但没有一种可以给出一个持续正确的答案。我提出的最简单的解决方案是这个函数,只要不使用CSS溢出body标记,它就可以工作

function getIFrameHeight(){
    function getComputedBodyStyle(prop) {
        return parseInt(
            document.defaultView.getComputedStyle(document.body, null),
            10
        );
    }

    return document.body.offsetHeight +
        getComputedBodyStyle('marginTop') +
        getComputedBodyStyle('marginBottom');
}
这是IE9版本,对于更长的IE8版本,请参见此

如果确实溢出了正文,并且无法修复代码来停止此操作,则使用
文档的
离视
滚动高度
属性。documentElement
是更好的选择。两者都有优点和缺点,最好只是对两者进行测试,看看哪个对你有用

最可靠的方法是计算页面上最低元素底部的位置。这在现代浏览器中非常有效,但在旧浏览器中速度较慢

function getMaxElement(elements) {
    var
        elementsLength = elements.length,
        elVal          = 0,
        maxVal         = 0;

    for (var i = 0; i < elementsLength; i++) {
        elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('marginBottom',elements[i]);
        if (elVal > maxVal) {
            maxVal = elVal;
        }
    }

    return maxVal;
}
函数getMaxElement(元素){ 变量 elementsLength=elements.length, elVal=0, maxVal=0; 对于(变量i=0;imaxVal){ maxVal=elVal; } } 返回maxVal; } 这些代码片段来自我编写的一个库,用于保持iFrame的大小与其内容相符。除此之外,它还监视iFrame和父页面中的事件,以确保iFrame保持正确的大小,并提供其他功能来解决常见的iFrame问题。所以你可能会感兴趣


获取iFrame的准确高度并不像它应该的那样简单,因为您可以选择六种不同的属性进行检查,但没有一种属性能够给出一个持续正确的答案。我提出的最简单的解决方案是这个函数,只要不使用CSS溢出body标记,它就可以工作

function getIFrameHeight(){
    function getComputedBodyStyle(prop) {
        return parseInt(
            document.defaultView.getComputedStyle(document.body, null),
            10
        );
    }

    return document.body.offsetHeight +
        getComputedBodyStyle('marginTop') +
        getComputedBodyStyle('marginBottom');
}
这是IE9版本,对于更长的IE8版本,请参见此

如果确实溢出了正文,并且无法修复代码来停止此操作,则使用
文档的
离视
滚动高度
属性。documentElement
是更好的选择。两者都有优点和缺点,最好只是对两者进行测试,看看哪个对你有用

最可靠的方法是计算页面上最低元素底部的位置。这在现代浏览器中非常有效,但在旧浏览器中速度较慢

function getMaxElement(elements) {
    var
        elementsLength = elements.length,
        elVal          = 0,
        maxVal         = 0;

    for (var i = 0; i < elementsLength; i++) {
        elVal = elements[i].getBoundingClientRect()[side] + getComputedStyle('marginBottom',elements[i]);
        if (elVal > maxVal) {
            maxVal = elVal;
        }
    }

    return maxVal;
}
函数getMaxElement(元素){ 变量 elementsLength=elements.length, elVal=0, maxVal=0; 对于(变量i=0;imaxVal){ maxVal=elVal; } } 返回maxVal; } 这些代码片段来自我编写的一个库,用于保持iFrame的大小与其内容相符。除此之外,它还监视iFrame和父页面中的事件,以确保iFrame保持正确的大小,并提供其他功能来解决常见的iFrame问题。所以你可能会感兴趣