首页 > 其他分享 >iframe 通信

iframe 通信

时间:2023-11-17 14:06:26浏览次数:35  
标签:postMessage 调用 窗口 win 通信 targetOrigin iframe message

postMessage 接口允许窗口之间相互通信,无论它们来自什么源。

因此,这是解决“同源”策略的方式之一。它允许来自于 marh.com 的窗口与来自于 qq.com 的窗口进行通信,并交换信息,但前提是它们双方必须均同意并调用相应的 JavaScript 函数。这可以保护用户的安全。

这个接口有两个部分。

1 postMessage

想要发送消息的窗口需要调用接收窗口的 postMessage 方法。换句话说,如果我们想把消息发送给 win,我们应该调用 win.postMessage(data, targetOrigin)

参数

data

要发送的数据。可以是任何对象,数据会被通过使用“结构化序列化算法(structured serialization algorithm)”进行克隆。IE 浏览器只支持字符串,因此我们需要对复杂的对象调用 JSON.stringify 方法进行处理,以支持该浏览器。

targetOrigin

指定目标窗口的源,以便只有来自给定的源的窗口才能获得该消息。

// <iframe src="http://127.0.0.1:8080/2.html" name="example" />  
 
 let win = window.frames.example;    
 win.postMessage("message", "http://127.0.0.1:8080");

2 onmessage

为了接收消息,目标窗口应该在 message 事件上有一个处理程序。当 postMessage 被调用时触发该事件(并且 targetOrigin 检查成功)。

event 对象具有特殊属性:

  • datapostMessage 传递来的数据。
  • origin 发送方的源,例如 http://javascript.info
  • source 对发送方窗口的引用。如果我们想,我们可以立即 source.postMessage(...) 回去。

要为 message 事件分配处理程序,我们应该使用 addEventListener,简短的语法 window.onmessage 不起作用。


标签:postMessage,调用,窗口,win,通信,targetOrigin,iframe,message
From: https://blog.51cto.com/u_16357471/8441172

相关文章

  • 工业智能网关实现MQTT协议与物联网平台的数据通信
    随着工业物联网技术的不断发展,越来越多的设备和系统需要实现数据共享。MQTT是一种基于发布/订阅模式的轻量级消息传输协议,在物联网各种场景应用广泛,成为许多设备与物联网平台通信的标准协议之一。 物通博联推出的工业智能网关具备多样设备接入、数据采集和传输的边缘计算网关,支持......
  • 升讯威在线客服系统的并发高性能数据处理技术:实现拔网线也不丢消息的高可靠通信(附视频
    我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。客服系统开发过程中,最让我意外的是对TCP/IP协议的认识。过去一直认为TCP/IP是可靠的连接,加上过去开发的软件网络环境比较稳定,很少在这个问题上纠结......
  • Linux进程间通信模式
    管道是一种单向传输数据的机制,它其实是一段缓存,里面的数据只能从一端写入,从另一端读出。如果想互相通信,我们需要创建两个管道才行。管道分为两种类型,“|”表示的管道称为匿名管道,意思就是这个类型的管道没有名字,用完了就销毁了。就像上面那个命令里面的一样,竖线代表的管道随着命令......
  • 量子计算和量子通信技术
    一、定义量子计算和量子通信技术是一种基于量子力学原理的计算和通信技术,与传统计算和通信技术相比,具有更高的计算速度和更高的安全性。量子计算技术利用量子比特(qubit)替代传统计算机中的位(bit),利用量子态的叠加和纠缠等特性,实现更快速的计算。量子通信技术利用量子纠缠和量子密钥分......
  • iframe 嵌网页 只显示网页的某一部分
    方法,使用DIV控制,这也是使用iframe框架的好处,因为它不像frame,它可以显示的网页的任意区域代码如下:<html><head><title>Iframe标签显示目标网页的指定区域</title></head><body><divalign="center"style="margin:0auto;"><divstyl......
  • iframe本身就不是动态语言,样式和脚本都需要额外导入.iFrame的本质是内联框架的缩写,它
    以下哪个选项的描述是错误的Aiframe是用来在网页中插入第三方页面,早期的页面使用iframe主要是用于导航栏这种很多页面都相同的部分,这样在切换页面的时候避免重复下载Biframe的创建比一般的DOM元素慢了1-2个数量级Ciframe标签会阻塞页面的的加载Diframe本质是动态语言的Inc......
  • 微前端 micro-app 传参、通信
    微前端micro-app传参、通信 环境及配置,参考:https://www.cnblogs.com/1285026182YUAN/p/17828681.html 1. 应用传参主应用:<template><divclass="container"><micro-appname="my-app-page1"url="http://localhost:5173/stand&quo......
  • 在 Angular 中,Controller 之间通信的方式主要有三种:作用域继承仅限于上下级之间的通信
    AngularJS中control间通信最好使用什么方式?A回调B全局变量C广播D函数调用正确答案:C在Angular中,Controller之间通信的方式主要有三种:1)作用域继承。利用子Controller控制父Controller上的数据。2)注入服务。把需要共享的数据注册为一个service,在需要的Controlle......
  • NDK生成so文件,进行Android端串口通信
    开篇说明1、NDK构建工具的安装2、ndk-build所需构建文件Android.mk、Application.mk(官方链接:ndk-build脚本 | AndroidNDK | AndroidDevelopers(google.cn))3、java定义动态调用接口、生成头文件4、C++串口通信5、Java提供相关接口,生成jar包......
  • 以太网通信控制板-B2-控制板作为多路TCP客户端和电脑TCP服务器通信(连接路由器或者交
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/CH579_DTU_PBX/index1.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明如果......