postMessage:iframe(子页面) 与 父页面 通信

跨 iframe 通信通常使用 postMessage 方法,这是一种安全且标准化的方式在不同源(origin)的文档之间传递消息。

父传子
父页面可以通过 contentWindow.postMessage() 方法向子页面发送消息。

  1. 父页面发送消息:
    使用 postMessage 方法将消息发送到指定的窗口(iframe)。
// 父页面发送消息到 iframe
var iframe = document.getElementById('Iframe');
iframe.contentWindow.postMessage('发送给iframe页面内的消息', '*');
  1. Iframe内接收消息:

在接收消息的一方,使用 message 事件监听并处理消息。

// 在 iframe 中接收消息
window.addEventListener('message', function(event) {// 一定要检查消息来源,确保安全if (event.origin !== 'http://allow-origin.com') return;console.log('Received message:', event.data);
});

子传父

子页面可以通过 parent.postMessage() 方法向父页面发送消息。

在一个嵌套的页面中,window 对象表示当前页面,而 window.parent 则表示包含当前页面 (iframe)的父页面。通过 window.parent,iframe 可以访问父页面的属性、方法和对象,并且可以在子页面中向父页面发送消息、调用父页面的函数等。

iframe内发送消息:

const obj = {type: "isShowIcon",msg: {data: false,},};window.parent.postMessage(JSON.stringify(obj), "*");

父页面接收消息:

// 在 父页面 中接收消息
window.addEventListener("message",(e) => {let data = JSON.parse(e.data);if (data.type == "isShowIcon") {console.log(data.msg.data);}},
);

安全性

为了确保通信的安全性,应当在接收消息时验证消息的来源(origin),使用通配符 * 时应谨慎,最好限制来源的范围。

// 安全的接收消息示例
window.addEventListener('message', function(event) {if (event.origin === 'http://allow-origin.com') {// 处理来自可信源的消息console.log('可信来源数据:', event.data);} else {console.warn('不确定来源:', event.origin);}
});

定义类型,来区别在 iframe 中那些不同的操作内容类型:

发送

// var message = {
//   customType: '你自定义的消息类型/来源',
//   customValue: '你自定义的消息'
// };function addNums(a, b){return a + b;
}var message = {operateType: 'clickBtn',sendValue: '点击了一下,怎么了',sendFunc: addNums
};
// window.location.origin   iframe的url源
window.parent.postMessage(message, window.location.origin);

监听接收消息

window.addEventListener('message', function(event) {if (event.origin === 'http://origin.com' && event.data?.operateType === 'clickBtn') {// 处理来自可信源和特定的类型的消息console.log('可信来源数据:', event.data.sendValue); // 点击了一下,怎么了event.data.sendFunc(520, 1); // 521} else {console.warn('不确定来源:', event.origin);}
});

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

机器人末端的负载辨识

关节处的摩擦力变小了,导致系统的参数辨识精度会变高,因为动力学方程中的摩擦力项占的比例会变小。 为什么要有一个负载的参数辨识,因为对于整个系统来说,除了负载哈,其他关节都是不变的,出厂时都设置好了&…

Java基础-知识点

文章目录 数据类型包装类型缓存池 String概述不可变的含义不可变的好处String、StringBuffer、StringBuilderString.intern() 运算参数传递float与double隐式类型转换switch 继承访问权限抽象类与接口super重写与重载**1. 重写(Override)****2. 重载(Overload)** Object类的通用…

FFMPEG数据封装格式、多媒体传输协议、音视频编解码器

FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器,提供了录制、转换以及流化音视频的完整解决方案。 ffmpeg命令行参数解释 ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出…

速通!腾讯发布《2024大模型十大趋势》

【写在前面】 腾讯发布的《2024大模型十大趋势》报告在2024世界人工智能大会上引起了广泛关注。该报告深入分析了人工智能领域的最新进展,特别是大模型技术在不同应用场景中的潜力和影响,并预测了未来人工智能的发展方向。 “大模型技术发展方向 大模型…

深入理解HTTP Cookie

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 HTTP Cookie定义工作原理分类安全性用途 认识 cookie基本格式实验测试 cookie 当我们登录了B站过后,为什么下次访问B站就…

光伏电站灰尘监测系统的工作原理

型号:TH-HS1】光伏电站灰尘监测系统是一种专门用于监测光伏电站内部灰尘积累情况的系统,通过安装在太阳能电池板表面的传感器,实时收集电池板表面的灰尘信息,包括灰尘厚度、污染比、洁净比等,并将这些数据发送到中央处…

杨中科 ASP.NETCORE 异步编程二

一、不要用sleep() 如果想在异步方法中暂停一段时间,不要用Thread.sleep(),因为它会阻塞调用线程,而要用await.Task.Delay()。 举例: 下载一个网址,3秒后下载另一个 示例: sleep() 为了能直观看到效果,使用winfor…

【STM32开发之寄存器版】(八)-定时器的编码器接口模式

一、前言 1.1 编码器接口原理 编码器模式主要用于检测旋转编码器的转动方向和转动速度。旋转编码器一般输出两路相位相差90度的脉冲信号(称为A相和B相),通过这两路信号,定时器可以判断编码器的旋转方向,并计数转动的脉…

新同事半天搭建了一套CRM系统,实力赢得老板青睐直接转正

我们都知道,搭建一套CRM系统,根据功能和数据的复杂性,一般需要2至4周才能完成。最近,我们团队新来了一位同事,之前做过产品,没写过代码。老板安排他试试能不能搭建一套CRM系统,主要用于市场部同…

【学术会议征稿】第五届应用力学与机械工程国际学术会议(ICAMME 2024)

第五届应用力学与机械工程国际学术会议(ICAMME 2024) 2024 5th International Conference on Applied Mechanics and Mechanical Engineering 在全球技术快速发展的背景下,应用力学和机械工程作为推动现代工业创新的根基,持续展…

解决html2canvas图片模糊不清,超出一页长截图问题

前言 最近需要做一个页面截图功能,类似QQ、微信截图功能,核心是将Html网页转换成图片格式,并且尽可能保证截图后图片样式和原网页一致。对比了一些第三方插件以及浏览器自带的API,最终选择使用JavaScript库‌:如html2…

【读书笔记·VLSI电路设计方法解密】问题7:什么是基于标准单元的专用集成电路 (ASIC) 设计方法论

标准单元方法论是一种基于预组装库单元的芯片设计方法。该库中包含的标准单元和宏单元(例如存储器、I/O、特殊功能单元、锁相环(PLLs)等)已经在预定的工艺节点中设计、布局并经过验证。这些单元经过完全表征,并在逻辑、时序、物理和电气模型方面进行了定义,并正确地打包在…

【学术会议征稿】2024年智能通信、感知与电磁学术会议(ICSE 2024)

2024年智能通信、感知与电磁学术会议(ICSE 2024) 2024 International Conference on Intelligent Communication, Sensing and Electromagnetics 2024年智能通信、感知与电磁学术会议(ICSE 2024)将于2024年12月13-15日在中国-广…

【AI系统】AI在不同领域的应用与行业影响

本文将探讨AI在不同技术领域和行业中的广泛应用,以及这些应用如何影响和改变我们的世界。 I. 引言 AI技术正日益渗透到各个技术领域,从计算机视觉到自然语言处理,再到音频处理,AI的应用正变得越来越广泛。这些技术的发展不仅推动…

TMtech凯珏LED驱动芯片T8332AD升降压线性

T8332AD 是 TM Technology, Inc. 设计的一款多功能 LED 驱动 IC。它具有广泛的输入电压范围、精确的恒流控制和多种保护机制,非常适合各种大功率 LED 应用。以下是其主要特点、应用和技术规格的概述。 主要特点 1. 宽输入电压范围:在 5V 到 60V 之间高…

平衡树 BTree和B+Tree

B树索引是B树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B树中的B代表平衡(balance),而不是二叉(binary),因为B树是从最早的平衡二叉树演化而来的。在讲B树之前必须先了…

41 | 单例模式(上):为什么说支持懒加载的双重检测不比饿汉式更优?

从今天开始,我们正式进入到设计模式的学习。我们知道,经典的设计模式有 23 种。其中,常用的并不是很多。据我的工作经验来看,常用的可能都不到一半。如果随便抓一个程序员,让他说一说最熟悉的 3 种设计模式&#xff0c…

2015年国赛高教杯数学建模C题月上柳梢头解题全过程文档及程序

2015年国赛高教杯数学建模 C题 月上柳梢头 月上柳梢头,人约黄昏后”是北宋学者欧阳修的名句,写的是与佳人相约的情景。请用天文学的观点赏析该名句,并进行如下的讨论:   1. 定义“月上柳梢头”时月亮在空中的角度和什么时间称为…

SOMEIP_ETS_177: SD_Unused_data_after_Options_Array_wrong_length

测试目的: 验证DUT能够正确处理单播SubscribeEventgroup请求,该请求在末尾包含未使用的有效载荷数据,且这些数据的长度不包括在SOME/IP长度字段中,并对此发送SubscribeEventgroupAck消息。 描述 本测试用例旨在确保DUT遵循SOME…