iframe 元素

<iframe>元素遵守同源政策,只有当父窗口与子窗口在同一个域时,两者之间才可以用脚本通信。

document.getElementById

对于iframe嵌入的窗口,document.getElementById方法可以拿到该窗口的 DOM 节点,然后使用contentWindow属性获得iframe节点包含的window对象。

 var iframe = document.getElementById("iframe");var iwindow = iframe.contentWindow;var idoc = iwindow.document;console.log("window:",iwindow);//获取iframe的window对象console.log("document:",idoc); //获取iframe的documentconsole.log("html:",idoc.documentElement);//获取iframe的htmlconsole.log("head:",idoc.head); //获取headconsole.log("body:",idoc.body); //获取body

打印结果如下:

window.frames[‘iframe’]

<iframe name="iframe" src="/admin/common/map/mineMap"></iframe>

iframe设置name属性,通过window.frames[‘iframe']也可以说去子页面的DOM节点。

多窗口通信

窗口内部,使用window.parent引用父窗口。如果当前页面没有父窗口,则window.parent属性返回自身。因此,可以通过window.parent是否等于window.self,判断当前窗口是否为iframe窗口。

window.parent 获取上一级的window对象,如果还是iframe则是该iframe的window对象
window.top 获取最顶级容器的window对象,即,就是你打开页面的文档
window.self 返回自身window的引用。可以理解 window===window.self

具体可以通过下图加深理解:

子页面(iframe)向父页面发起通信

示例:

子页面:
setMapinfo(){var vm = parent.page;var  params = {"lng": self.lng,"lat": self.lat,"address": self.address};// 为父级页面返回信息vm.getMapInfo(params);
},父页面:
getMapInfo(point){if(point){this.form.lng = point.lng;this.form.lat = point.lat;}
},

子页面中取得数据,通过setMapinfo方法以参数的形式传给父页面中的getMapInfo

父页面向子页面(iframe)发起通信

示例:

<iframe id="liveview" name="liveview" src="/admin/videoSurveillance/index/getLiveVideo"></iframe>// 视频内容切换
onVideoChange(value){document.getElementById("liveview").contentWindow.window.page.getVideo(sbbh);// 等同于上面方法// window.frames[‘liveview'].window.page.getVideo(sbbh);
},

iframe页面使用Js实现父页面和子页面通信相关推荐

  1. 08﹑导航子页面切换功能5_实现导航栏子页面切换

    08﹑导航子页面切换功能5_实现导航栏子页面切换

  2. HTML框架IFrame结合JS在主页面和子页面间传值

    下面主页面和子页面互相传值的DEMO 如果仅仅需要子页面触发主页面的函数 仅需 [ parent.window.你的函数 ] 就可以了 DOM方法: 父窗口操作IFRAME:window.frames ...

  3. iframe父元素获取子页面的元素

    父页面 <iframe src="iframe.html" id="iframeId" height="150" width=&quo ...

  4. layui 父页面向弹出框中的子页面form表单进行赋值

    1 ,父页面js layer.open({type: 2,title: '修改数据',shadeClose: false,shade: 0.8,area: ['60%', '60%'],content ...

  5. vue.js:父组件向子组件传递数据props

    笔记代码 <!DOCTYPE html> <html><head><meta charset="utf-8"><meta na ...

  6. vue.js:父组件和子组件

    父组件和子组件 1.创建两个组件 const cpnC1 = Vue.extend({template:`<div><h2>我是标题1</h2><p>我 ...

  7. JavaScript(js)节点--父节点、子节点、兄弟节点

    JavaScript(js)节点–父节点子节点 一般节点至少拥有nodeType(结点类型),nodeName(节点名称)和nodeValue(节点值)这三个基本属性. 元素节点 nodeType为1 ...

  8. Vue组件(二)父组件、子组件通信/传值

    一.Vue 父组件访问子组件 1.父组件获取子组件对象 通过ref引用属性访问子组件对象 定义: <StudentInfo :num="parentNum" ref=&quo ...

  9. 如何解析json并展示到html页面中,js解析json并生成html页面

    issue.js中json格式: var issueList = [{ date : '201108', issues : [{ n : '5', t : '20110817', d : '../52 ...

  10. java父窗口传值给子窗口_【赖国荣】js实现父窗口与子窗口传值

    1.变量的定义与使用,条件语句,循环语句和数组的使用: 2.定义和使用对象:this语句的使用:isNaN,eval函数的使用: 4.类型转换函数parseInt,parseFloat使用: 5.打开 ...

最新文章

  1. 蓝桥杯国赛-矩阵计数三种解法-java实现
  2. android小程序案例_小程序案例赏析:高质量的小程序怎么做
  3. LeetCode:2. Add Two Numbers
  4. C++中类的多态与虚函数的使用(转)
  5. Spring-基于Spring使用自定义注解及Aspect实现数据库切换
  6. 香帅的北大金融学课笔记11 -- 资产配置
  7. php fpm 测试,zabbix4.2 监控PHP-FPM运行状态的数据
  8. 【pyqt5】 读取numpy arrray 显示图片
  9. 算法设计与分析——回溯法——符号三角形问题
  10. 播客51:妈妈可以编码的创始人埃里卡·彼得森(Erica Peterson)
  11. ARM处理器工作模式
  12. 一种M2M业务的架构及实现M2M业务的方法
  13. python3安装后怎么开启_python3.10 如何下载安装?
  14. centos /bin /sbin /usr/bin /usr/sbin 目录的说明
  15. CTreeCtrl::HitTest
  16. 使用java进行图像处理_使用Java进行图像处理
  17. 证券计算机行业研究,20210630-首创证券-计算机行业深度报告:物联网,研究框架.pdf...
  18. java爬取_java实现爬取知乎用户基本信息
  19. COM组件的编写与注册
  20. TensorFlow北大公开课学习笔记-4.3滑动平均

热门文章

  1. 转--计算几何常用算法概览
  2. 5秒钟搭建一个简单版的restful资源服务器
  3. [css]通过transform缩放邮件客户端h5页面
  4. 安装Sublime Text 3插件的方法
  5. Oracle sga、pga介绍改动
  6. WCF-006:服务端类的封装问题
  7. 2012-1-31学习日记
  8. 4.剑指Offer --- 解决面试题的思路
  9. 6.深入分布式缓存:从原理到实践 --- Memcached 周边技术
  10. 安全运维 - Linux系统攻击应急响应