当前位置: 首页 > news >正文

寻找客户资源的网站毕节网站建设与对策分析

寻找客户资源的网站,毕节网站建设与对策分析,手机wap网站源码,网站建设设计规划写在前面 在前端开发过程中,会遇到一些需要使用iframe的场景,使用iframe关键的一个点是数据之间的传输,基于同源的要求十分苛刻,大家基本上是都是跨域的,如果跨域进行数据传输呢? 大家使用的比较多的就是p…

写在前面

在前端开发过程中,会遇到一些需要使用iframe的场景,使用iframe关键的一个点是数据之间的传输,基于同源的要求十分苛刻,大家基本上是都是跨域的,如果跨域进行数据传输呢?
大家使用的比较多的就是postMessage()这个方法了,下面将具体展示如何在html中使用iframe进行数据传输,以及在angular框架中如何使用以及在angular中与html中的差异性

普通html页面

由外到内(向iframe内网页传输数据)

使用iframe处

<body><iframe src="./iframe-content.html" class="iframe" frameborder="0"></iframe><script>const iframeElement = document.querySelector(".iframe");//需要等待iframe加载完成后再发送信息,原因是 iframe的网页需要注册message事件,若先发消息再注册,那么在注册之前是收不到消息的iframeElement.addEventListener("load", () => {//相当于iframe自己给自己发消息iframeElement.contentWindow.postMessage("这是一条信息", "*");});</script></body>

iframe内容

<body><span>这里是iframe内容</span><script>window.addEventListener("message", (event) => {console.log(event.data);});</script>
</body>

由内到外

使用iframe处

  <body><iframe src="./iframe-content.html" class="iframe" frameborder="0"></iframe><script>window.addEventListener("message", (event) => {console.log(event.data);});</script></body>

iframe内容

 <body><span>这里是iframe内容</span><script>//给上层级发消息,若上层级是顶层可以使用window.topwindow.parent.postMessage("给使用处发消息", "*");</script></body>

在Angular使用

  • 首先是src 在angular中直接使用src链接会被认为是不安全的,需要通过DomSanitizer中的bypassSecurityTrustResourceUrl方法进行一个转化才可使用
constructor(private sanitizer: DomSanitizer
) {this.src = this.sanitizer.bypassSecurityTrustResourceUrl(`${path}`);
}
  • 其次是在获取iframe 可以通过 @ViewChild来获取
@ViewChild('iframe') iframeElement:ElementRef<HTMLIFrameElement>; 来进行获取
  • 通过监听iframe load事件来判断接受事件是否注册不能使用了 ,就需要在iframe内部传来一条信息来通知事件是否注册完成
  iframeElement.addEventListener("load", () => {iframeElement.contentWindow.postMessage("这是一条信息", "*");});
  window.parent.postMessage(true); //通知app事件注册成功//接受iframe来的通知 基于rxjs去写事件的监听fromEvent<MessageEvent>(window, 'message').pipe(map(data => data.data)).pipe(takeUntil(this.ngUnsubscribe$)).subscribe(isLoaded => {if (isLoaded) {this.templatePreviewIframe.nativeElement.contentWindow.postMessage(数据);}});

总结

html

<iframe
#iframe
[src]="src"
frameborder="0"
></iframe>
src:string;
ngUnsubscribe$= new Subject();
@ViewChild('iframe') iframeElement: ElementRef<HTMLIFrameElement>;
constructor(private sanitizer: DomSanitizer
) {this.src = this.sanitizer.bypassSecurityTrustResourceUrl(`${path}`);
}ngOnInit(){fromEvent<MessageEvent>(window, 'message').pipe(map(data => data.data)).pipe(takeUntil(this.ngUnsubscribe$)).subscribe(isLoaded => {if (isLoaded) {this.templatePreviewIframe.nativeElement.contentWindow.postMessage(数据);}});
}ngOnDestroy(){this.ngUnsubscribe$.next();this.ngUnsubscribe$.complete();
}

iframe内容网页

ngOnInit(){fromEvent(window, 'message').subscribe((event: MessageEvent<any>) => {//todo});window.parent.postMessage(true); //通知app事件注册成功
}
http://www.yayakq.cn/news/342309/

相关文章:

  • 网站导航条图片素材怎么制作自己的二维码
  • 国家住房和城乡建设厅网站建设工程网站168
  • wordpress 双栏主题泉州做网站优化价格
  • 楚雄建网站有做兼职的网站吗
  • wordpress 做手机站wordpress添加会员登录页面
  • 网站推广计划怎么做网站管理系统后台
  • 甘肃公司网站建设哪家好网站制作计划
  • 网站百度流量怎么做好看的网站 你知道的2021
  • 做整合营销的网站为什么局域网做网站
  • 怎么做国内网站吗小白学做网站买什么书
  • 长沙本地网站推广内蒙古企业网站制作
  • 网站核心词如何做视频剪辑线下培训班
  • 网站建设关键字优化自己做免费网站难吗
  • 泡沫制品技术支持东莞网站建设红酒 公司 网站建设
  • 建筑资料免费下载网站铜陵网站建设价格
  • 浙江省建设厅网站在哪里如何将微信和企业网站同步
  • 微信小程序平台设计成都网站排名 生客seo
  • 墨子学院网站建设vip课程网站是com好点还是cn
  • 商户网站建设培训平台网站
  • 网站排版设布局中国建筑装饰网型号填什么
  • 教育行业网站建设重庆网站建设排名
  • 龙南城市建设局网站国外做鞋子的网站吗
  • 泉州微信网站开发公司北京轨道交通建设公司网站
  • 手机端网站建设教程视频制作ppt的软件免费
  • 安徽金开建设集团网站微商城怎么开通视频
  • 怎么使网站降权柳州网站制作服务商
  • 网站服务器买了后怎么做做网站如何引用头部
  • 重庆市住房和城乡建设网站校园网站建设费用
  • 建站公司做的网站侵权了WordPress的欢迎页面
  • 公司做网站能够带来的好处中国互联网企业100强榜单