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

相关文章

如何在页面调用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分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

Weex入门教程之3,使用 Vue 开发 Weex 页面

环境安装 在这里简略地介绍下,详细看官方教程 Node.js 环境 Node.js官网 通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit。 npm 是一个 JavaScript 包管理工具,它可以让开发者轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 也将很多工具发布到社区方便开发者使用。

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM