首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态更改typescript/angular4中iframe的高度

动态更改typescript/angular4中iframe的高度
EN

Stack Overflow用户
提问于 2017-04-19 00:14:39
回答 2查看 1.7K关注 0票数 3

我正在开发一个跨域的应用程序,需要将内容加载到iframe中。问题是我们不知道我们正在接收的内容的大小,我希望能够动态地改变iframe的高度以适应相应的情况。然而,我找到的所有解决方案都是以JavaScript为中心的,但我正在使用TypeScript/Angular4。

我尝试过通过iframe上的(load)访问DOM元素,但它没有返回iframe内容,而是初始的iframe大小(在加载内容之前)。

感谢您的帮助,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-04-09 18:29:47

您可以使用以下指令来实现这一点。

代码语言:javascript
复制
import { Directive , ElementRef , OnInit , Renderer } from '@angular/core';
@Directive({
selector: '[iframeAutoHeight]'
})
export class IframeAutoHeightDirective implements OnInit {
private el: any;
private renderer: Renderer;
private prevHeight: number;
private sameCount: number;

constructor(_elementRef: ElementRef, _renderer: Renderer) {
    this.el = _elementRef.nativeElement;
    this.renderer = _renderer;
}

ngOnInit() {
    const self = this;
    if (this.el.tagName === 'IFRAME') {
        this.renderer.listen(this.el, 'load', () => {
            self.prevHeight = 0;
            self.sameCount = 0;
            setTimeout(() => {
                self.setHeight();
            }, 50);
        });
    }
}

setHeight() {
    const self = this;
    if (this.el.contentWindow.document.body.scrollHeight !== this.prevHeight) {
        this.sameCount = 0;
        this.prevHeight = this.el.contentWindow.document.body.scrollHeight;
        this.renderer.setElementStyle(
            self.el,
            'height',
            this.el.contentWindow.document.body.scrollHeight  + 'px'
        );
        setTimeout(() => {
            self.setHeight();
        }, 50);

    } else {
        this.sameCount++;
        if (this.sameCount < 2) {
            setTimeout(() => {
                self.setHeight();
            }, 50);
        }
    }
}
}
票数 0
EN

Stack Overflow用户

发布于 2017-04-19 23:07:57

我有一个类似的应用程序。我刚刚将iframe height属性设置为100%,并将滚动设置为auto。然后在你的外部应用中,只需将html和body设置为100%的高度,并将body overflow-y设置为隐藏即可。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43477275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档