本文介绍父页面监听iframe内子页面传出的事件并作出反应的方法
父页面使用原生js
子页面使用angular

要实现的效果:
1.父页面有一个input框和一个div,初始值都为0
2.子页面有两个button,add与reduce
3.点击后分别使父页面input框和div内的值+1与-1

页面效果如下

父页面html代码

<body><div>I'm Parent</div><input id="displayInput" type="text" value="0" /><div id="displayDiv">0</div><iframe id="myIframe" width="100%" height="600px" src="http://localhost:4200/"></iframe><script type="text/javascript" src="./parent.js"></script>
</body>

子页面html代码(本文子页面使用angular)

<h1>I'm Angular Module</h1>
<nav><a id="add" (click)="add()">Add</a><br><a id="reduce" (click)="reduce()">Reduce</a>
</nav>

可以看出,父html中通过iframe内嵌了子html

子页面js代码(本文子页面使用angular)
事件传到父页面使用window.parent.postMessage方法

//定义传递给父页面的对象
data:any = {}add(){//给对象赋值this.data['Data'] = 1;//将已赋值的对象传给父页面//参数一为要传递的参数,参数二为要传递到的目标window.parent.postMessage(data, "http://localhost:4200/assets/parent.html");
}reduce(){this.data['Data'] = -1;window.parent.postMessage(data, "http://localhost:4200/assets/parent.html");
}

父页面接收并响应的js代码
本文提供两种方法
首先获取到input和div的dom对象

let input = document.querySelector('#displayInput');
let div = document.querySelector('#displayDiv');

方法一

window.addEventListener("message", receiveMessage, false);
function receiveMessage(event){input.value = parseInt(input.value) + event.data.Datadiv.innerHTML = parseInt(div.innerHTML) + event.data.Data;
}

方法二

window.onload = function () {//添加监听事件if (typeof window.addEventListener != "undefined")window.addEventListener("message", func, false);//兼容不支持addEventLinstener的IEelse if (typeof window.attachEvent != 'undefined')window.attachEvent("onmessage", func);
}//接收到后调用次方法
function func(event) {input.value = event.data.Datadiv.innerHTML = event.data.Data;
}

点击add测试

点击reduce测试

父页面js监听iframe内子页面并作出响应相关推荐

  1. js监听iframe是否加载完毕

    js监听iframe是否加载完毕 代码片. //初始化加载var a = document.getElementById(iframe的id);var iframeLoad = function () ...

  2. php退出页面父元素,jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码...

    iframe和弹窗这些词对于js高手来说都是耳熟能详的东西,作为一个新人来说,还在学习阶段的我就在工作中遇到这么一个奇葩的需求,要在引入的iframe页面里做一个全屏化的功能. 粗略一看,这还不容易, ...

  3. 【js监听报错】页面监听js报错问题

    <html> <head> <script type="text/javascript">// 页面监听js报错问题 οnerrοr=handl ...

  4. js监听iframe关闭_Node.js文档NET[翻译]

    Node.js v12.0.0 Documentation​nodejs.org Net模块提供一个异步的网络API,这个API可以创建基于流的TCP,或者IPC服务器(net.createServe ...

  5. js监听用户关闭当前页面

    只需要监听一个函数 当然 前提是 你的dom树要挂载好了 如果你是vue项目 放在mounted里就好了 window.onbeforeunload = function(e) {debugger }

  6. h5页面js监听页面失去焦点、获取焦点

    小程序/uniapp等项目有onshow.onhide等生命周期. 其实在h5页面中对应的是页面激活.页面非激活状态. 应用场景: eg:在某h5页面需要连接websoket,页面激活状态建立连接,页 ...

  7. JS监听页面元素删除子节点、增加子节点、修改子节点的内容

    监听这个事件DOMSubtreeModified. 表示如果当前监听元素的子节点有改动:包括删除子节点.增加子节点.修改子节点的内容,都会触发这个事件. var container = documen ...

  8. js监听浏览器tab页面变化

    js监听浏览器tab页面变化 引言 今天写到一个需求,当用户离开当前页面的时候,需要关闭页面的一个功能,查找资料发现了这个指令,个人觉得很有用,记录下来... 直接上代码 mounted:(){thi ...

  9. java计算器监听放大缩小,js监听页面放大缩小

    demo body[zoom='scale']:before{ content: '您的网页处于缩放状态,请按 Ctrl+0 恢复到浏览器默认大小'; z-index: 9999; position: ...

  10. js 监听 安卓事件_百行代码实现js事件监听实现跨页面数据传输

    百行代码实现js事件监听实现跨页面数据传输 使用场景 类似消息队列的使用场景,支持同页面和跨页面通信,发送消息和接收消息 技术原理 跨页面通信: 基于事件监听,通过监听 storage事件监听回调机制 ...

最新文章

  1. 删除mongodb库
  2. 【Demo 0085】导出EXE文件资源
  3. 联想p720装系统_分享联想ThinkPad X1 Carbon笔记本最稳的重装WIN10系统方法
  4. 布法罗博士计算机专业回国人员,四名UW学生参加爱达荷州国家实验室的实习计划...
  5. Drools和jBPM KIE A​​pps平台
  6. 《刺激战场》正式停服!换了个马甲又来了 开启收费变现模式?
  7. Quarter square 查找表乘法器,手动建立rom
  8. 这个容器逃逸 exploit 获得首届年度谷歌云平台大奖10万美元
  9. mysql函数第一次返回字符串_Mysql字符串处理函数详细介绍、总结
  10. active mq topic消费后删除_【SpringBoot MQ 系列】RabbitListener 消费基本使用姿势介绍
  11. Zephyr单元测试框架:ztest/twister的使用和介绍
  12. Java swing实现一组图片自动轮播
  13. NYOJ Dinner
  14. FLASH和EEPROM的最大区别
  15. 高漫 1060 Pro 数位板 Mac OS X 下无法设置 shift 快捷键解决方法
  16. 程序员考证书,有用吗?
  17. js return加分号_JavaScript 语句后应该加分号么?
  18. Flutter Text文本删除线、下划线设置
  19. 深入浅出Embedding
  20. echarts:x轴文字竖排显示

热门文章

  1. JELLY技术周刊 Vol.24 -- 技术周刊 · 实现 Recoil 只需百行代码?
  2. Element-Plus中日期时间选择器组件DateTimePicker默认显示英文的问题
  3. linux怎么编译ipa,如何使用XCode 4创建ipa文件及提交应用程序
  4. 07 Anykey图像优化及文字头像生成与加载
  5. IBM小型机更换硬盘详细步骤
  6. 达索系统与中国的那些创新
  7. 华硕路由官方固件修改hosts可重启路由
  8. 使用TTP224触摸芯片时出现的一些问题
  9. 那些拿到腾讯、阿里等大厂offer的人,都有这个共同点
  10. 银行卡号码的校验规则(Luhn算法/模10算法)