js-iframe-同源策略-addEventListener-postMessage-父子框架

文章目录

  • 1.同源策略
  • 2.不同源解决办法-postMessage不受跨域的影响
    • 2.1.addEventListener函数监听消息
    • 2.2.父传子-不同源
    • 2.3.子传父-不同源
  • 3.通过父页面操作子页面-同源
    • 3.1.值
    • 3.2.函数
  • 4.通过子页面操作父页面-同源
    • 4.1.值
    • 4.2.函数

1.同源策略

在HTML页面中,我们有时候会使用<iframe>标签打开一个子窗口,又或者使用window.open方法打开一个子窗口,但有时想让父子窗口之间进行通信。例如:根据父窗口的大小,对<iframe>子窗口大小进行设置等问题。
①、如果<iframe>中src属性配置的地址和父窗口在同一个域下,可以在子窗口中通过window.parent.document来获取父窗口的DOM对象。亦或父窗口也可以通过contentWindow属性获取子窗口的DOM对象(Iframe情况下)。例如:document.getElementById(‘iframe标签的ID’).contentWindow。两者之间操作不会出现任何跨域的问题,可以自由的获取任意想要的元素信息内容。也就不在本篇文章的讨论范围内。
②、如果<iframe>中的src属性配置的地址与父窗口不在同一个域下,即:协议、域名、端口任何一个不一样都会造成跨域问题。当使用window.parent.document进行操作的时候,就会提示跨域的问题,就是上面截图的信息内容。又或者使用contentWindow属性也会提示相同的跨域问题。

SecurityError: Blocked a frame with origin from accessing a cross-origin frame…

在不同端口号下,不能使用传统的iframe嵌套调用方法。

document.getElementById(“mainFrame”).contentWindow.xxxx();

<protocol>://<hostname>:<port>/path/to/page.html

如果要访问iframe,协议、主机名和端口必须与域相同。

2.不同源解决办法-postMessage不受跨域的影响

在HTML页面中,可以在当前页面中使用window.parent获取父级窗口对象(WIndow),从而向父级窗口发送消息(子->父)。同样也可以使用contentWindow获取Iframe的打开的子窗口对象,从而向子窗口发送消息。(父->子)

在父窗口中获取其子窗口的window对象,又或者在子窗口中获取其父窗口的window对象。但是如果两个父子窗口存在跨域问题,那么将不能对获取到的window对象进行任何操作。即可以在跨域的情况下获取其子窗口或者父窗口的window对象,但是不能对获取到的window对象进行任何操作。如果进行了任何的操作,都会提示跨域的问题。但是有两个是例外。即使在跨域的情况下也可以对其进行设置。

①location属性:设置window准备跳转的页面。后面两种解决方法使用该属性。
②postMessage方法,H5之后添加的。

无论当前域名是什么,获取到的window对象的域名是什么。即使这两个域名之间存在跨域问题,在window对象中有一个属性location的设置和一个方法postMessage的调用不会受到跨域的影响。

2.1.addEventListener函数监听消息

addEventListener方法有两个参数:
①监听的时间类型:对于发送消息而言,固定为message。
②回调函数:在回调函数中一个参数event,event其中包含三个重要的属性:
1.data:表示接受到的消息内容,可能是字符串,可能是对象,取决有发送方。
2.origin:String类型,表示发送消息的域名地址
3.source:对象,表示发送消息的窗口对象。

window.addEventListener('message', funciton(event){$("#child").text($("#child").text() + '由' + event.origin + "发送过来的消息为:"+event.data);
});

2.2.父传子-不同源

尽管同一源站策略阻止脚本访问不同源站的内容,但如果您同时拥有这两个页面,则可以使用window.postmessageand其相关消息事件在两个页面之间发送消息来解决此问题。

	  //父窗口var win=document.getElementById('WeiXinQRCodeFrame').contentWindow;win.postMessage ("测试", '*');//在iframe子页面window.addEventListener('message', function (event) {//event.data获取传过来的数据});

2.3.子传父-不同源

	  //父窗口parent.window.postMessage("测试", '*');//在iframe子页面window.addEventListener('message', function (event) {//event.data获取传过来的数据});

3.通过父页面操作子页面-同源

获取 iframe 页面中的元素。

3.1.值

document.getElementById('myframe').contentWindow.document.getElementById('V_ORGID').value = 111	$('#myframe').contents().find('#V_ORGID').val('111')

3.2.函数

document.getElementById("myframe").contentWindow.fn()

4.通过子页面操作父页面-同源

获取父页面中的元素。

4.1.值

window.parent.document.getElementById("ORGID").value = 111

4.2.函数

window.parent.fn()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

等保主机测评防骗指南(资产调研)

你是否测评时常被运维给忽悠&#xff1f;是否觉得以下的对话耳熟&#xff1f; 你&#xff1a;您好&#xff0c;请问你们的主机资产有哪些&#xff0c;包括服务器、数据库、中间件、应用系统等。 甲&#xff1a;我们资产就这两台服务器&#xff0c;数据库什么的都这上面&#…

中断的“挂起状态”

中断的“挂起状态”&#xff08;Pending State&#xff09;是指中断信号已经被系统识别&#xff0c;但尚未被处理器处理的状态。在微控制器或计算机系统中&#xff0c;中断通常是程序外部事件&#xff08;如硬件设备的信号&#xff09;触发的信号&#xff0c;用于通知处理器需要…

C++关键字总结

1.数据类型 bool:布尔类型&#xff0c;属于基本类型的整数类型&#xff0c;取值为真和假 true:具有布尔类型的字面量&#xff0c;表示真 false:具有布尔类型的字面量&#xff0c;表示假 char:表示字符型&#xff0c;定义了字节的大小&#xff0c;char表示单字节字符 wchar_t:表…

蛇形矩阵(xmuoj)

描述 输入两个整数n和m&#xff0c;输出一个n行m列的矩阵&#xff0c;将数字11到nm按照回字蛇形填充至矩阵中。 具体矩阵形式可参考样例。 输入 输入共一行&#xff0c;包含两个整数n和m。 输出 输出满足要求的矩阵。 矩阵占n行&#xff0c;每行包含m个空格隔开的整数。…

TMGM:ASIC撤销禁令,TMGM强化合规、重启差价合约服务

TMGM作为差价合约&#xff08;CFDs&#xff09;与保证金外汇交易领域的领航者&#xff0c;安全、合规、高效被奉为我集团的终身使命。澳大利亚证券和投资委员会&#xff08;ASIC&#xff09;已正式撤销了早前针对TMGM差价合约业务实施的临时止损令。这一误会的解除&#xff0c;…

降低IT运营成本,提升客户体验 |LinkSLA亮相第十届CDIE

6月25-26日&#xff0c;中国数字化创新博览会&#xff08;CDIE 2024&#xff09;在上海张江科学会堂举行。本届展览主题为“AI创新&#xff0c;引领商业增长新格局”&#xff0c;旨在交流企业在数字化时代&#xff0c;如何以科技为驱动&#xff0c;在转型中如何把握机遇&#x…

Springboot + Mybatis-Plus代码生成指南

使用 Spring Boot 和 MyBatis-Plus 生成代码&#xff0c;可以大大简化开发流程&#xff0c;可以保持编码的规范性&#xff0c;生成单元测试等。以下是详细步骤&#xff1a; 配置pom.xml <dependency><groupId>com.baomidou</groupId><artifactId>myb…

【D3.js in Action 3 精译】推荐序

作为一名自由职业的数据可视化教育从业人员、咨询顾问和设计师&#xff0c;我从 2000 年代末开始就深深沉浸在数据可视化的各个角落&#xff0c;有幸坐到前排亲眼目睹了巨大的产业变革。数据可视化的技术格局一直在推陈出新。从行业工具的发展演变&#xff0c;到触达受众的可视…

如何利用静力水准仪进行地形沉降测量

地形沉降测量在建筑工程和地质研究中起着至关重要的作用。准确的地形沉降测量可以帮助工程师预测和预防潜在的地基问题&#xff0c;从而保障建筑物的安全和稳定。本文将详细介绍如何利用静力水准仪进行地形沉降测量&#xff0c;并探讨其在实际应用中的优势。 静力水准仪的基本原…

关于数字化营销中做好拓新裂变活动的策划探讨

一、引言 在当今数字化时代&#xff0c;企业面临着日益激烈的市场竞争和不断变化的消费者需求。数字化营销作为一种高效的营销方式&#xff0c;能够以较低的成本触达更广泛的目标受众。而拓新裂变活动则是数字化营销中的关键环节&#xff0c;对于企业快速扩大用户群体、提升品…

购物商城系统

摘要 随着互联网的快速发展&#xff0c;网上购物已经成为人们日常生活中不可或缺的一部分。越来越多的消费者选择在网上购物&#xff0c;享受随时随地的便利和丰富多样的商品选择。然而&#xff0c;随着网上购物用户数量的不断增加&#xff0c;传统的线下商店已经无法满足用户…

国家地表水水质自动监测数据(整理版)

国家地表水水质自动检测实时数据发布系统&#xff0c;发布的数据。含省份、城市、河流、流域、断面名称、监测时间、水温、pH、DO、CODMn、TP、TN、NH3-N、浊度等。 数据介绍&#xff1a; 2014年4月-2020年11月每月60-140个左右的站点有数据&#xff0c;从2020年11月开始&#…

MHA、MMM高可用方案及故障切换

目录 一、MHA高可用方案 1、MHA的组成 2、MHA的工作原理 3、部署MHA架构 第一部分&#xff1a;一主两从数据库架构部署 1、全部更改主机名、初始化操作、开启mysql服务、设置主机名管理、时间同步 2、MySQL服务器做主从复制 3、测试主从效果 第二部分&#xff1a;MHA架…

MySQL建表时的注意事项

以下是我对MySQL建表时的注意事项。其实&#xff0c;建表事项有很多&#xff0c;我的总结如下&#xff1a; 1 存储引擎的选择&#xff0c;一般做开发&#xff0c;都是要支持事务的&#xff0c;所以选择InnoDB 2 对字段类型的选择&#xff1a; ​ 对于日期类型如果要记录时分…

VS Code SSH 远程连接服务器及坑点解决

1,设置密钥参考VS Code SSH 远程连接服务器及坑点解决_vscode-cli-611f9bfce64f25108829dd295f54a6894e87339-CSDN博客 2, 远程服务器需要下载 sudo apt-get install wget sudo apt-get install curl 3,代理设置 https://bobbyhadz.com/blog/error-while-fetching-extensi…

PyTorch nn.MSELoss() 均方误差损失函数详解和要点提醒

文章目录 nn.MSELoss() 均方误差损失函数参数数学公式元素版本 要点附录 参考链接 nn.MSELoss() 均方误差损失函数 torch.nn.MSELoss(size_averageNone, reduceNone, reductionmean) Creates a criterion that measures the mean squared error (squared L2 norm) between each…

Python25 Numpy基础

1.什么是Numpy NumPy&#xff08;Numerical Python 的简称&#xff09;是 Python 语言的一个扩展程序库&#xff0c;支持大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库。NumPy 的前身是 Numeric&#xff0c;这是一个由 Jim Hugunin 等人开发的…

SAP ALV 负号提前

FUNCTION CONVERSION_EXIT_ZSIGN_OUTPUT. *"---------------------------------------------------------------------- *"*"本地接口&#xff1a; *" IMPORTING *" REFERENCE(INPUT) *" EXPORTING *" REFERENCE(OUTPUT) *"…

PNAS|这样也可以?拿别人数据发自己Paper?速围观!

还在为数据量小&#xff0c;说服力不足发愁&#xff1f; 想研究脱颖而出、眼前一亮&#xff1f; 想从更高层次的探索微生物的奥秘&#xff0c;发出一篇好文章&#xff1f; 近期&#xff0c;有一篇发表在PNAS(IF11.1)的文章“Deforestation impacts soil biodiversity and ecos…

量子计算与AI融合:IBM引领未来计算新纪元

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…