问题一、 iframe如何自适应屏幕高度

解决思路:通过设置iframe外层父元素高度等于window高度,再相对于父元素定位iframe元素;案例如下:

第一步: 模板文件中使用iframe


// demo.component.html
<div style="position: relative; " [style.height]="outHeight"><iframe [src]="srcValue" allowtransparency="true" frameborder="0" id="defaulIframePage" style="position: absolute; width: 100%; height: 100%; "></iframe>
</div>

第二步: ts 中自定义iframe外层父元素的高度


// demo.component.ts
import {fromEvent} from "rxjs/index";export class DemoComponent imple implements OnInit{srcValue = 'http://www.baidu.com';  outHeight = '0px';ngOnInit() {// ifram最外层高度this.outHeight = window.innerHeight + 'px';fromEvent(window, 'resize').subscribe(($event) => {this.outHeight = window.innerHeight + 'px';});}
}

问题二、 安全机制设置

错误:

解决:

第一步:创建管道


import { Pipe, PipeTransform } from '@angular/core';
import {DomSanitizer} from "@angular/platform-browser";@Pipe({name: 'safe'
})
export class SafePipe implements PipeTransform {constructor(private sanitizer: DomSanitizer) {}transform(value: any, args?: any): any {return this.sanitizer.bypassSecurityTrustResourceUrl(value);}
}

第二步: 在demo.component.html文件中加入管道


<iframe [src]="item.url | safe" allowtransparency="true" frameborder="0" id="defaulIframePage" style="position: absolute; width: 100%; height: 100%; "></iframe>

问题三、src值为同域名不同参数时,iframe不刷新问题

解决思路:使用动态组件 - 将iframe放至动态组件中,父组件将src传值给动态组件,并且每次传值时动态渲染组件;

1. 父组件定义


// parent.component.html
<a href= "javascript:;" (click)="loadCmp(srcArray[1])">切换iframe的src值</a>
<div #dynamic></div>// parent.component.ts
export class ParentComponentimplements OnInit, OnDestroy {// 动态切换的src模拟数据srcArray = ["index.html?id='11'", "index.html?id='22'"];// 动态组件@ViewChild('dynamic', { read: ViewContainerRef }) dmRoom: ViewContainerRef;currentCmp: any; // 当前渲染组件constructor(private cfr: ComponentFactoryResolver) {}ngOnInit() {// 动态渲染组件this.loadCmp(this.srcArray[0]);}// 动态渲染组件方法loadCmp(srcValue) {const com = this.cfr.resolveComponentFactory(DynamicComponent);this.dmRoom.clear(); // 清空视图this.currentCmp = this.dmRoom.createComponent(com);// 传值this.currentCmp.instance.pathUrl = srcUrl;}
}

2. 动态组件定义


// dynamic组件;;别忘记将DynamicComponent加入数组entryComponents中;
// dynamic.component.html
<iframe [src]="pathUrl | safe" allowtransparency="true" frameborder="0" id="defaulIframePage" style="position: absolute; width: 100%; height: 100%; "></iframe>// dynamic.component.ts
export class DynamicComponent {pathUrl: string = '';
}

转载于:https://www.cnblogs.com/zero-zm/p/10290529.html

angular6 iframe应用相关推荐

  1. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  2. FRAME与IFRAME

    FRAME与IFRAME 框架概念 : 所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 转载于:https://www.cnblogs.com/vibratea/archive/200 ...

  3. 用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值

    Window postMessage() 方法 定义和用法 postMessage() 方法用于安全地实现跨源通信. 语法 otherWindow.postMessage(message, targe ...

  4. iframe几种常用代码片段

    <iframeid="SGframe"src="外部文件名.html"frameborder="no"scrolling=" ...

  5. ASP.NET小收集:IFrame使用

    使用Iframe制作一个固定框架,很方便与象后台网站之类的页面 1<htmlxmlns="http://www.w3.org/1999/xhtml">2<head ...

  6. iframe自动调整高度能在IE5里实现吗

    偶已经理解到style="height:expression(main.document.body.scrollHeight)"只对第一次显示的内嵌网页有效,如果里面的内容更新必须 ...

  7. 如何实现iframe(嵌入式帧)的自适应高度

    好几次看到有人提问问到如何实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象,刚好我在工作中也碰到了类似问题,于是上网翻查,东抄抄西看看,弄 ...

  8. “画中画”效果--谈IFRAME标签的使用

    作者:秋实    文章来源:天极网页陶吧 纵观时下网站,本来网速就有些慢,可是几乎每页都要放什么Banner,栏目图片,版权等一大堆雷同的东西,当然,出于网站风格统一.广告效应的需要,本无可厚非,可毕 ...

  9. Iframe 用法浅析

    解释成"浏览器中的浏览器"很是恰当 <iframe frameborder=0 width=170 height=100 marginheight=0 marginwidth ...

最新文章

  1. 强化学习笔记:Q-learning :temporal difference 方法
  2. ZooKeeper 技术内幕,Leader 选举是一个什么样的过程?
  3. 学习操作系统的经典书籍
  4. python将学生信息保存到文件中_Python statsmodels OLS:如何将学习的模型保存到文件中...
  5. Jupter 在windows下的运行
  6. 关于web开发的评论思考
  7. xmlhttp资料(收集)
  8. 【信号处理】信号与系统 电子课本(郑君里)
  9. linux 搭建技术博客,Linux NTP服务器搭建精讲
  10. cocoscreator中tween详细用法
  11. liinux下安装jdk
  12. 性能测试工程师职业现状分析
  13. python画多个圆_我如何用pythonturtle画一个中间有一个圆的圆圈?
  14. Android开发之GPS测试完整案例源码详解之实时检测GPS的状态
  15. 控制台输出——键盘图形
  16. Python--面向对象进阶
  17. java 数组去除重复_Java从数组中删除重复项?
  18. LeetCode——反转字符串
  19. 动态规划——最长非降子序列
  20. 跨考计算机面试英语自我介绍,2019考研复试面试英语自我介绍范文(2)

热门文章

  1. 【转】三五个人十来条枪 如何走出软件作坊成为开发正规军
  2. 网站页面左右_广州网站优化的技巧是什么?
  3. ft服务器设置传输协议,ft服务器设置成主动模式
  4. 计算机原理及应用课程,课程介绍
  5. 属性被分为八大类不包括_Python语言---私有属性
  6. file 选择的文件胖多有多大_如何删除 macOS 压缩包中的隐藏文件?
  7. c await和java_blog/java/test/awaitility.zh.md at master · c-rainstorm/blog · GitHub
  8. php url传递变量,php – 在laravel中通过url传递变量
  9. CSDN编程挑战——《高斯公式》
  10. 外部中断---STM32F1