iframe 子父页面互相通信

2024-02-26 13:18

本文主要是介绍iframe 子父页面互相通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

知识点

1、父页面向子页面发送消息const idIframe = document.getElementById("idIframe").contentWindowconst data = {data: 10000}idIframe.postMessage(data, '*');2、子页面向父页面发送消息const data = {data: 10000}window.parent.postMessage(data , "*");3、接收消息方法window.addEventListener('message', function (e) {// do something})

父页面

import React, { useState } from 'react';
import {Spin, Button} from 'antd'export default class IframeIndex extends React.Component {refIframe = React.createRef()constructor() {super()this.state ={loading: true}}componentDidMount(){const idIframe = document.getElementById("idIframe")idIframe.onload = () => {this.setState({loading: false})}window.addEventListener("message", this.handleMessage)}/*** 监听子页面传过来的值的方法* @param {Object} event*/handleMessage(event) {console.log(event, '监听子页面传过来的值的方法');// do something}/*** 向iframe传值的方法* @param {Object} data*/sendMessage = () => {const idIframe = document.getElementById("idIframe").contentWindowconst data = {data: 10000}idIframe.postMessage(data, '*');}render() {const { loading } = this.statereturn(<><Spin spinning={loading}><Button onClick={this.sendMessage}>向iframe传值的方法</Button><iframeid={"idIframe"}ref={this.refIframe}frameBorder="0"src={'http://localhost:8000/iframe/child'}width={"100%"}height={"400px"}></iframe></Spin></>)}
}

子页面

import React, { useState } from 'react';import { Button } from 'antd';export default class IframeIndex extends React.Component {constructor() {super();this.state = {};}componentDidMount() {// 监听postMessage 数据window.addEventListener('message', (e) => {console.log(e);});}/*** 向iframe传值的方法* @param {Object} data*/sendMessage = () => {const idIframe = document.getElementById('idIframe').contentWindow;const data = { data: 10000 };idIframe.postMessage(data, '*');};render() {return (<><div style={{ padding: '10px' }}><Button size='small' onClick={() => this.postMessage()}>向父页面传值</Button>&nbsp;</div></>);}
}

这篇关于iframe 子父页面互相通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748999

相关文章

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java实现XML与JSON的互相转换详解

《Java实现XML与JSON的互相转换详解》这篇文章主要为大家详细介绍了如何使用Java实现XML与JSON的互相转换,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. XML转jsON1.1 代码目的1.2 代码实现2. JSON转XML3. JSON转XML并输出成指定的

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

SpringBoot如何访问jsp页面

《SpringBoot如何访问jsp页面》本文介绍了如何在SpringBoot项目中进行Web开发,包括创建项目、配置文件、添加依赖、控制层修改、测试效果以及在IDEA中进行配置的详细步骤... 目录SpringBoot如何访问JSP页python面简介实现步骤1. 首先创建的项目一定要是web项目2. 在

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识