位置: 编程技术 - 正文

使用postMesssage()实现iframe跨域页面间的信息传递(使用权资产)

编辑:rootadmin

推荐整理分享使用postMesssage()实现iframe跨域页面间的信息传递(使用权资产),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:使用灭火器时要对准火焰的什么部位喷射,使用粗盐热敷十大危害,使用的英文,使用的英文,使用粗盐热敷十大危害,使用灭火器时要对准火焰的什么部位喷射,使用的拼音,使用时间,内容如对您有帮助,希望把文章链接给更多的朋友!

由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现:

1. 子页面url传参

简单说来就是把所有需要传递的参数加到与主页面同源的url上,将子页面重定向到该url,然后主页面通过iframe的src获取这些参数

过程非常复杂,不建议使用这种方法

2. postMessage()

postMesssage()是HTML5提供的一个基于事件的消息传输API,可以实现跨文本档、多窗口、跨域消息传递。

postMessage(data,origin)方法接受两个参数

1.data:要传递的数据,html5规范中提到该参数可以是JavaScript的任意基本类型或可复制的对象,然而并不是所有浏览器都做到了这点儿,部分浏览器只能处理字符串参数,所以我们在传递参数的时候需要使用JSON.stringify()方法对对象参数序列化,在低版本IE中引用json2.js可以实现类似效果。

2.origin:字符串参数,指明目标窗口的源,协议+主机+端口号[+URL],URL会被忽略,所以可以不写,这个参数是为了安全考虑,postMessage()方法只会将message传递给指定窗口,当然如果愿意也可以建参数设置为"*",这样可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。

发送消息(子页面)

使用postMesssage()实现iframe跨域页面间的信息传递(使用权资产)

由于部分浏览器只能处理字符串参数,我们需要先使用JSON.stringfy()将参数转换为字符串,然后再接收页面使用JSON.parse()转换回对象。

接收消息

对于子页面传递过来的参数,我们可以通过监听window的message事件来获取:

message事件有几个重要属性

1.data:顾名思义,是传递来的message

2.source:发送消息的窗口对象

3.origin:发送消息窗口的源(协议+主机+端口号)

通过postMesssage()方法和message事件就可以实现跨域传递消息了,需要注意的是,在demo中我们是通过子页面向父页面传递消息,所以使用的是window.parent发送,window接收:

window.parent.postMessage(dataJson, '*');

如果是从主页面向子页面就需要对换,使用window发送,window.frames[0]来接收了。

以上内容是小编给大家介绍的使用postMesssage()实现iframe跨域页面间的信息传递,希望对大家有所帮助!

分析js闭包引起的事件注册问题 背景:闲暇时间看了几篇关于js作用域链与闭包的文章,偶然又看到了之前遇到的一个问题,就是在for循环中为dom节点注册事件驱动,具体见下面代码:

javascript中不易分清的slice,splice和split三个函数 每每见到这三个函数,我都会很懵,一定要到网上搜搜;今天,恰巧又见到了它们,所以想必是时候为它们做个笔记啦1.slice(数组)用法:array.slice(star

js解决movebox移动问题 本文为大家分享了js解决movebox移动问题,并且取消图片默认拖动事件的相关操作,供大家参考,具体内容如下html:!DOCTYPEhtmlhtmlheadmetahttp-equiv="Content-Type"co

标签: 使用权资产

本文链接地址:https://www.jiuchutong.com/biancheng/375984.html 转载请保留说明!

上一篇:JavaScript面向对象程序设计教程(javascript面向对象编程指南)

下一篇:分析js闭包引起的事件注册问题(js闭包解决了什么问题)

  • 代扣代缴完税凭证 要勾选吗
  • 厂里搬厂赔偿员工标准
  • 销售免税产品要计算销项税吗
  • 债务重组损失是费用吗
  • 行政单位收入支出结转
  • 外购原材料自用要进项转出吗
  • 股权转让资本公积怎么处理
  • 雇主责任险是否属于财产保险
  • 没有认证方式
  • 营改增后还有建筑业发票吗
  • 天然气的销售需要什么资质
  • 旅游服务费计入什么费用
  • 汇算所得税中“以前年度多缴的所得税额在本年抵减额”怎么填 ?
  • 商标是按年交费的吗
  • 收到的税费返还减少的原因
  • 需要会计报表的人
  • 增值税即征即退会计处理
  • 季报小微企业不包括哪些
  • 华为p60pro上市时间是几月
  • linux清理磁盘空间
  • adsl灯一直闪烁
  • 查看电脑系统版本
  • windows11怎么显示我的电脑
  • 建筑工程增值税税率是多少
  • php字符串定义的三种方式
  • php提示框
  • laravel搭建
  • 库存股会计处理 会计视野
  • 公允价值变动损益在利润表哪里
  • 两险征缴工作的意义
  • 网络安全实验室
  • 永磁同步电机基础理论pdf
  • php如何实现重载
  • 汽车销售公司购置税账务处理
  • 金税盘已作废发票可以取消吗
  • 合同不交印花税怎么处理
  • 其他债权投资计提减值影响所有者权益吗
  • 设计服务内容是什么
  • 企业收到的政府部门工作经费
  • 分公司是否具有独立承担民事责任的能力
  • 以资抵债如何实现债权和物权的转
  • 差旅费科目设置
  • 汇算清缴补税的凭证后面需要附件吗
  • 开具红字增值税专用发票信息表需要盖章吗
  • 银行利息收入的会计分录怎么写
  • 小规模企业购买车辆发票可以抵税吗
  • 怎么看财务报表平不平
  • sql中函数 判断是否是null
  • win7系统开启telnet服务
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • win2000蓝屏0x0000007b
  • windowsserver2008r2密码重置
  • ubuntu无法进入系统出现uid121
  • IPad怎么连接电视机看看影视
  • win7输入法图标不见了怎么恢复正常
  • xp系统怎么卸载程序
  • 提高生殖能力
  • 搭建技巧和方法示意图
  • u盘安装win7视频教程
  • agentctl.dll
  • 和大家一起分享一下你读书以后的感受吧
  • win8开始菜单没有了
  • windows10一分钟重启解决
  • cocos2dx4.0教程
  • javascript中
  • windows更新
  • unity系统错误
  • html5翻页效果
  • nodejs获取当前时间
  • framelayout布局
  • jquery操作html代码
  • nodejs gyp
  • android PopupWindow显示位置设置
  • libgdx robovm admob IOS SDK的绑定
  • 河北省2021城乡居民医保优惠新政策
  • 进项票当月认证怎么操作
  • 吉林省地方税务局
  • 公务员中了彩票怎么领取
  • 江苏国家税务局电子税务局电话
  • 税务副科级干部交流
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设