postMessage 跨文档消息传递

iframe高度自适应的解决方案 iframe高度自适应的解决方案 使用场景:通过Iframe来解决项目嵌套问题时会碰到iframe的高度自适应的问题; 正常情况下的iframe:会出现一个滚动条影响美观 情况1:不存在跨域情况时的解决方案 <iframe name="outerPage" onload="iframeload()" src="./test.html" name="myFrame" scrolling="auto" frameborder="0" id="outerPage" :style="{ 'min- 阅读详情

postMessage作用在于解决,来自不同域的页面之间的消息传递,而且稳妥又方便。

假设此时有一个文档A,要向文档B传递消息C,就可在文档A中直接写:

B.postMessage(C, B.domain);

postMessage()方法接收两个参数,第一个为要传递的消息,第二个为消息接收方所处的域。第二个参数的作用在于保障通信安全。即防止把消息发送到不安全的地方。若要把消息发送到来自任何域的文档,可把第二个参数写为 ‘*’ 。

当文档接收到消息,就会触发window对象的message事件,此事件以异步形式触发。比如上面写到的,当文档B收到文档A发来的消息C,即触发message事件,可在文档B中设置事件处理函数来判断。如:

    window.addEventListener('message', function(event){
        //if(event.origin != ''){return;}
        event.source.postMessage('received, data is    '+event.data,'*');
    })

该事件对象event包含三方面的重要信息:

  1. data:作为postMessage()的第一个参数传入的字符串数据;
  2. origin:发送消息的文档所在的域,可用来检测消息来源。
  3. source:发送消息的文档的window对象的代理。注意,因为只是代理,只用它来调用postMessage()就好。

试着写个demo,按下按钮,就可以获取iframe中的背景色并用他修改box的背景色。
A.html

<div id='box' style="width: 100px;height: 100px;background: blue;"></div>
<button id="color">changeColor</button>
<div>
    <iframe src="b.html"></iframe>
</div>
<script type="text/javascript">
    var btn = document.getElementById('color');
    btn.onclick = function(){
        window.frames[0].postMessage('give me the color','*');
    }
    window.addEventListener('message', function(event){
        var box = document.getElementById('box');
        box.style.backgroundColor = event.data;
    })
</script>

B.html

<p id="box" style="width: 100px;height: 100px;background: red;">heiheihei</p>
<script type="text/javascript">
    var box=document.getElementById('box');
    var color = box.style.backgroundColor;
    window.addEventListener('message', function(event){
        //if(event.origin != ''){return;}
        event.source.postMessage(color,'*');
    })
</script>
跨文档消息传递:WebKit中的Web通信新纪元 跨文档消息传递是一种Web API,它允许来自不同源的文档或同一源的不同窗口(tabs)之间进行通信。这种通信机制基于方法和message事件。 阅读详情

相关推荐

jQuery嵌套iframe并实现自适应高度

在网页开发中,有时候我们需要在一个iframe中嵌套另一个iframe,并且希望内部的iframe能够根据其内容的高度自动调整高度,以确保内容完全显示,而不出现滚动条。在父级页面中,我们需要编写一些JavaScript代码来处理来自内部iframe的消息,并设置外层iframe的高度。当收到来自内部iframe的消息时,我们将其解析为一个数字,并将其作为新的高度值来设置外层iframe的高度。当收到消息时,我们将其解析为一个数字,并将其作为新的高度值来设置内部iframe的高度。在上面的代码中,我们通过。

DevSavantX的博客 628

iframe 跨域高度自适应

这个iframe的问题,在工作中简直就是突然的一到坎,打的戳不及防。通常很久遇到一次,每次遇到就忘记了上一次是如何解决的,emmmm…今天本仙女去总结一下。 在实际应用中,很多时候通iframe引入页面,如果同域情况,可以使用以下代码。 script: window.function(){ var ifm= document.getElementById(“iframepage”); var su...

Lucky050866的博客 1126

iframe自动适应高度(完美自适应高度嵌套代码),兼容目前主流浏览器。

iframe自动适应高度,很难得的资源,很多下载的都是部分浏览器可以用,这个可以兼容360.ie6789等,遨游,火狐。搜狗等浏览器。。亲自测试。

Iframe 跨域高度自适应

一开始想直接在iframe加载完成后读取子页面的doc中body的高度,结果发现有跨域问题,无法获得子页面的具体信息,后面在网上寻找各种解决方案,有很多是没有用的,甚至直接没考虑跨域的,最后找到一种方便而且使用的方法:子页面发送消息给父页面,父页面监听消息。父页面存在一个iframe标签加载https://moments.shiyu.dev/friends 这个子页面,而且父子页面不在同一个域上,所以父页面在加载完成iframe后创建事件监听,监听子页面发来的消息(高度)。

時雨的博客 645

测试用例经典练习之微信发红包测试用例

微信发红包测试用例

ZCYaiCLX3344的博客 1万+

【小宁学习日记6 PCB】电路原理图

本文系统讲解了电子硬件设计中原理图的阅读与绘制技巧。首先剖析原理图的四大核心要素(元件符号、连接线、结点、注释),强调注释对可读性的重要性。然后提出三步读懂法:查看图纸信息、分模块分析、结合芯片手册验证,并列举5个典型芯片案例(CH224K、CH343P等)进行实战解析。最后给出6条绘制规范:模块化布局、详细标注、规范命名、信号流布局、符号封装匹配、版本管理。文章指出原理图是电子设计的"地基",掌握规范阅读与绘制方法能大幅提升设计效率,避免常见错误。新手应从开源项目分析和简单电路绘制入手

qq_74376834的博客 2354

跨文档消息传递----postMessage()

HTML5 规范中,提出了XDM,又称为跨文档消息传递,其核心是 postMessage()方法,进行跨域和跨文档消息传递,示例如下: <div class="CrossDocumentMessage"> Cross Document Message , core---->postMessage()</div> <iframe i...

ahienoq190204的博客 232

LAMMPS+Phonopy计算声子色散曲线

机器学习训练完势函数之后,需要对加以验证。对于晶体而言,色散曲线是其衡量计算是否准确的最重要标准,当然,还有能量,比热,RDF等性质。

qq_68842798的博客 3462

跨文档消息传递 postMessage

一、跨文档消息传递 1. postMessage 发送信息 向当前页面的 <iframe> 元素传送数据 // 接收方window对象.postMessage( "message", "接收方域名" ); var iframeWindow = document.getElementById("myframe").contentWindow; //contentWindo...

dingshige8508的博客 288

百度飞桨+文心大模型实战:生成式AI工程师认证备考全攻略(含真题解析)

本文详细解析百度飞桨与文心大模型结合的生成式AI工程师认证备考策略,涵盖认证体系、学习路径、核心技能突破及真题分析。帮助开发者掌握大模型原理、飞桨平台操作和文心大模型应用,高效通过工信部与百度联合认证考试。

loss4bartender的博客 682

详细教程:如何使用elasticsearch 8.x进行向量搜索

大模型的热度使得向量数据库和embedding也成了ai领域的热门话题,有别于从头开始训练一个大模型或基于基础模型进行微调的方式,embedding检索相关上下文是对大模型进行定制的各种方法中成本最低、技术实现最便捷的方式。从技术实现的角度,

qq_50790981的博客 1万+

JavaScript:HTML5跨文档消息传递(postMessage)

      跨文档消息传送(cross-document messaging),有时候也简称为XDM,指的是来自不同域的页面间传递消息。例如,www.w3cmm.com域中的一个页面与一个位于内嵌框架中的p2p.w3cmm.com域中的页面通信。在XDM机制出现之前,更稳妥地实现这种通信需要花很多功夫。XDM把这种机制规范化,让我们能既稳妥有简单地实现跨文档通信。        XDM的核心是p...

山水子农 5221

三极管NPN与PNP的工作原理及快速识别技巧

本文深入浅出地解析了三极管NPN与PNP的核心工作原理。通过“水龙头”比喻,阐明其以小电流控制大电流的放大与开关本质。文章重点对比了NPN与PNP在电流方向、电位关系和控制逻辑上的根本区别,并提供了快速识别技巧与实用的选型、应用指南,帮助电子爱好者与工程师快速掌握这两种基础元件的关键知识。

neovim7hacker的博客 454

跨文档消息传递postMessage方法使用

<body> //主页代码 <h3>这里是主页米娜</h3> <iframe src="boxShadow.html" frameborder="0"></iframe> <h4>点我发送消息</h4> <script type="text/javascript"> ...

agpp49986的博客 182

SAP FI 会计科目表(COA)可直接套用配置模板

摘要:本文提供了SAP S/4HANA环境下可直接套用的会计科目表(COA)配置模板,包含科目编码规则、号段规划、科目组设置等核心内容。模板采用10位数字编码,按资产(1000)、负债(2000)、权益(3000)、成本(4000)、收入(5000)、费用(6000)六大类划分号段,并预设科目组控制字段状态。适用于集团/单一公司、国内/跨国企业场景,支持多表架构映射,配置完成后可通过事务码SAKO验证科目清单。模板遵循"前4位固定一级科目"原则,企业可根据行业特性调整明细科目。

金牌架构师 267

【ComfyUI】QwenImageEdit OOTD角色与姿态匹配换装

本文介绍了一个基于Qwen Edit OOTD 2.0的ComfyUI工作流,能够实现角色与姿态匹配的智能穿搭生成。该工作流通过整合模型推理、姿态识别、图像拼接和渲染等节点,完成从角色图、姿态图到成品穿搭图的完整生成流程。核心采用Qwen Image系列模型进行图像理解和编辑,配合ControlNet进行姿态引导。用户只需提供角色图和姿态参考图,系统即可自动完成姿态解析、语义编码、采样生成等步骤,输出与输入姿态一致的穿搭图像。该方案适用于虚拟角色展示、电商试穿等场景,能保持角色特征一致的同时灵活变换姿态,显

Mr数据杨 1587

H5 postMessage跨文档消息传递

父页面 包含的两个子页面a.html $("#btn").click(function(){ var message=$("input[type='text']").val(); window.parent.frames[1].postMessage(message,'*'); })

张晨光老师的播客 799

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

html5-跨文档消息传递-postMessage()

HTML5跨文档消息传递-postMessage() 如果要实现从一个页面向到另一个页面传递消息,使用html5的API就可 以实现。postMessage()就是用来试下跨文档消息传递的,不过这个API有局限, 只能新开的页面传递消息(内嵌也可以)。 一个页面内嵌另一个页面 // index.jsp页面(源页面) &lt;iframe src="http://localhost:...

harmsworth的博客 960

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【JS】postMessage与MessageChannel

【JS】postMessage与MessageChannel

owo_ovo的博客 1934

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

postMessage - 跨域消息传递

window.postMessage() 方法可以安全地实现跨域通信和页面间数据通信。 postMessage 可用于解决以下方面的问题: 页面和其打开的新窗口的数据传递 页面与嵌套的 iframe 消息传递 多窗口之间消息传递 想要使用 postMessage 实现跨域和页面间数据通信,只要记住 window 提供的 postMessage 方法和 message 事件就ok了。 语法...

huangpb的博客 7万+

H5 postMessage方法 以及监听

html5 postMessage解决跨域、跨窗口消息传递 一些麻烦事儿 平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 1.页面和其打开的新窗口的数据传递 2.多窗口之间消息传递 3.页面与嵌套的iframe消息传递 4.上面三个问题的跨域数据传递 postMessage() 这些问题都有一些解决办法,但html5引入的message的API可...

gwdgwd123的博客 5812

PostMessage

WindowsAPI  PostMessage是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。 函数功能   该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得。 原型与参数  ...

aikb6223的博客 346

跨文档通信postMessage

跨文档通信 postMessage window.postMessage(message, origin, [transfer]) message: 最好是传递字符串 origin:域信息,指定框架中文档来源的域,如果域匹配才会传递消息 transfer:不常使用,是一串课message同时传递的Transferable对象,这些对象的所有权将被转移给消息的接收方,而发送一方不在保留所有权 d...

扫地僧 203
上一篇: js实现常见排序算法
下一篇: webpack不是内部命令
linjiaqin1995
博客等级 码龄9年 5粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值