iframe内部子页面与外部主页面通讯

文章目录

  • 一、问题
  • 二、解决
    • 2.1、子页面
    • 2.2、主页面
  • 三、知识点
    • 3.1、[浏览器兼容性](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7)
    • 3.2、详解
      • 3.2.1、发送方
      • 3.2.2、接收方

一、问题

如上所示,红框内是内嵌iframe的网站。点击同意或拒绝后,需要通知iframe外的网站处理对应响应,这就是本篇文章需要解决的问题

二、解决

2.1、子页面

子页面发起通讯,可以设置传参,代码如下:

window.parent.postMessage({type: 'success',message: '成功'
}, "*")

2.2、主页面

主页面初始化时通过window.addEventListener,监听message,在回调中处理发送过来的响应或者处理相关参数,代码如下:

const fun = (e) => {// e.data为子页面发送的数据console.log('message', e.data); // { type: 'success', message: '成功' }
}
// 页面启动监听
window.addEventListener('message', fun, false);
// 页面卸载时需要销毁监听
window.removeEventListener('message', fun);

三、知识点

3.1、浏览器兼容性

3.2、详解

安全、可靠且支持跨域的 iframe 通信方式,它可以在两个窗口之间异步传递消息。

3.2.1、发送方

在发送方中,使用 window.postMessage() 方法向另一个窗口发送消息。该方法接收两个参数:

  1. 要发送的消息
  2. 目标窗口的源(例如,"http://127.0.0.1:5500/child.html""*"

3.2.2、接收方

在接收方中,使用 window.addEventListener() 方法监听 message 事件。该事件对象包含三个属性:

  1. data 表示接收到的数据
  2. origin 表示发送方的源
  3. source 表示发送方窗口的引用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被删数据库+勒索

被删数据库勒索 – WhiteNights Site 标签:日志 快照在手,天下我有 服务器又给人黑了。这次是给人黑了数据库,被人删库勒索,先放图吧。我还花了今天一个下午的时间查修这个漏洞,导致网站有接近6个小时都没法访问。 …

编程示例: Session Id的生成

实现思路 Session的实现方式如下:在用户第一次登录的时候,系统为它分配一个唯一Id(被称为Session Id)作为标识,并且 记录下这个用户的用户名、要登录的账套名、用户拥有的权限等,以Id为键,用户名、账套名等信息为值保…

云原生Kubernetes系列 | Kubernetes静态Pod的使用

云原生Kubernetes系列 | Kubernetes静态Pod的使用 静态pod不建议在master上操作,因为master上跑的是集群核心静态pod,如果配置失败,会导致集群故障。建议在knode1或knode2上去做。 kubernetes master节点上的核心组件pod其实都是静态pod: [root@k8s-master ~]# ls /etc/ku…

java中锁的使用-实战

技术主题 技术原理 在实际的业务中,为了保证线程安全,会进行对一些逻辑进行加锁,保证当前只有一个线程在操作。在代码中,我们经常使用两种方式进行加锁,来保证线程安全。一种是synchronized关键字,另一种是ReentrantLock加锁。写这一份的博客,就是为了记录下锁的基本使…

五分钟,Docker安装flink,并使用flinksql消费kafka数据

1、拉取flink镜像,创建网络 docker pull flink docker network create flink-network2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES"jobmanager.rpc.ad…

Redis 命令行 redis-cli 介绍

文章目录 前言1. 连接 Redis 服务2. 从其他程序获取输入3. 连续执行相同的命令4. CSV 输出5. 输出帮助信息6. 清空屏幕7. 连续监控统计信息8. 输出大 key 报告9. 监控 Redis 执行的命令 前言 redis-cli 是 Redis 自带的命令行工具,是运维和开发人员常用的工具&…

【C++干货铺】适配器 | stack | queue

个人主页点击直达:小白不是程序媛 C系列学习专栏:C干货铺 代码仓库:Gitee 目录 stack的介绍和使用 stack的介绍 stack的使用 queue的介绍和使用 queue的介绍 queue的使用 容器适配器 什么是适配器 STL中stack和queue的底层结构 d…

Doris扩容和缩容(六)

Doris 可以很方便的扩容和缩容 FE、BE、Broker 实例。 FE 扩容和缩容 可以通过将 FE 扩容至 3 个以上节点来实现 FE 的高可用。 1)使用 MySQL 登录客户端后,可以使用 sql 命令查看 FE 状态,目前就一台 FE mysql -h hadoop1 -P 9030 -uroo…

Python——基于YOLOV8的车牌识别(源码+教程)

目录 一、前言 二 、完成效果 三、 项目包 四、运行项目 (教程) 一、前言 YOLOv8LPRNet车牌定位与识别https://www.bilibili.com/video/BV1vk4y1E7MZ/ 最近做了有一个车牌识别的小需求,今天完成了,在此记录和分享 首先&#x…

办公技巧:Word中插入图片、形状、文本框排版技巧

目录 一、插入图片排版技巧 二、添加形状排版技巧 三、插入“文本框”排版技巧 我们平常在制作word时候经常会遇到插入选项卡下的图片、形状和文本框这三种情况下,那么如何使得Word文档当中添加这三个元素的同时,又能保证样式美观呢,今天小…

ComfyUI搭建使用教程

ComfyUI 是一个基于节点流程式的stable diffusion AI 绘图工具WebUI, 你可以把它想象成集成了stable diffusion功能的substance designer, 通过将stable diffusion的流程拆分成节点,实现了更加精准的工作流定制和完善的可复现性。但节点式的工…

【分布式】分布式事务及其解决方案

目录 一、分布式事务二、分布式事务的解决方案1. 全局事务(1)DTP模型(2) 两阶段提交协议(2PC)原理二阶段提交的缺点 (3)三阶段提交协议(3PC)原理 2. 基于可靠…

【算法】搭配购买(01背包,加权并查集)

题目 Joe觉得云朵很美,决定去山上的商店买一些云朵。 商店里有 n 朵云,云朵被编号为 1,2,…,n,并且每朵云都有一个价值。 但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配的云都要买。 …

DDoS攻击和CC攻击有什么不同之处?

DDoS是针对服务器IP发起,CC攻击针对的是业务端口。DDoS攻击打的是网站的服务器,而CC攻击是针对网站的页面攻击,用术语来说就是,一个是WEB网络层拒绝服务攻击(DDoS),一个是WEB应用层拒绝服务攻击…

Linux添加环境变量$PATH

变量$PATH 查看环境变量 [rootlocalhost lnserver]# echo $PATH /usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/root/bin由于没有docker路径的环境变量,docker命令使用无效 要将脚本添加到 PATH 中,以便无论在哪个目录中都可以调用它或执行它&…

【链路追踪】xxl-job定时任务日志增加traceId

问题背景 项目中通过sleuth实现了统一的traceId注入,在生产环境进行日志追溯时比较方便。但是在使用xxl-job进行定时任务管理时,却发现xxl-job线程打印出来的日志没有traceId,查询日志时十分不方便,于是通过使用Spring aop的方式…

点云从入门到精通技术详解100篇-基于深度学习的稀疏点云障碍物检测

目录 前言 国内外研究现状 激光雷达点云配准 激光雷达目标检测

c#代码Linq中使用OrderBy进行自定义排序

c#代码Linq中使用OrderBy进行自定义排序 /// <summary>/// 自定义字符串比较器 用于自定义排序/// </summary>public class StringComparer : IComparer<string>{/// <summary>/// 偏好的排序列表/// </summary>public List<string> _pre…

RK3568基于openharmony3.2版本之MIPI屏幕调试

mipi调试过程 1、前言2、开发环境3、调试过程3.1、下载openharmony3.2源码3.2、设备树上增加mipi-dsi屏幕的节点3.3、 分析kernel显示不出来画面3.4、 mipi屏幕显示效果图1、前言 由于工作需要,RK3568需要支持openharmony3.2系统版本,需要重新移植下载源码并且适配自家公司的…

【JavaWeb】HTMLCSSJavaScript

HTML&CSS&JavaScript 文章目录 HTML&CSS&JavaScript一、开发工具及在线帮助文档二、 HTML2.1 HTML&CSS&JavaScript的作用2.2 HTML基础结构2.3 HTML概念词汇解释2.4 HTML的语法规则2.5 常用标签 三、CSS3.1 引入方式3.2 CSS选择器3.3 CSS浮动3.4 CSS定位…