关于iframe/子窗体与父窗体的交互
父子窗体交互方式
通过contentWindow交互
主窗体内嵌的iframe或者是其通过js打开的新窗口都可以通过contentWindow与主窗体交互。所以首先需要获取到contentWindow才可以。要获取到可访问的contentWindow对象需要满足同源策略,这里需要保证两个窗口的域名完全相同才可以。也就是:
主窗体: http://test.example.com
子窗体: http://test.example.com
可以获取contentWindow
主窗体: http://father.example.com
子窗体: http://child.example.com
不能获取contentWindow
上面第二种情况我们可以通过设置document的domain属性来实现同域访问:
// 主窗体内的js
window.document.domain = example.com;
// 子窗体内的js
window.document.domain = example.com;
注意:domain属性的修改的限制,只能都去掉“子域名”(father,child)保留“主域名”(example)。
通过postMessage交互
这里大家可以通过mdn来获取相关的详细知识。
postMessage MDN
值得注意的点是:
- iframe如果有change src的操作,那么它的contentWindow对象要在load以后获取才能正常调用postMessage方法。
- 监听接收消息的时候,要注意判断信息来源,避免引起安全漏洞。
关于iframe/子窗体与父窗体的交互的更多相关文章
- winform子窗口与父窗口的交互-使用委托与事件
实现子窗口与父窗口的交互,通过父窗口调用并控制子窗口,子窗口也能控制父窗口,使用委托和事件的方法,可以实现. 1.父窗口调用子窗口,并通过子窗口控制父窗口 新建工程,创建两个窗体 显示子窗体的代 ...
- js之iframe子页面与父页面通信
iframe子页面与父页面通信根据iframe中src属性是同域链接还是跨域链接,通信方式也不同. 一.同域下父子页面的通信 父页面parent.html <html> <head& ...
- JS中iframe子页面与父页面之间通信
iframe子页面与父页面通信根据iframe中src属性是同域链接还是跨域链接,通信方式也不同. 一.同域下父子页面的通信 父页面parent.html <html> <head& ...
- iframe子页面与父页面元素的访问以及js变量的访问
1.子页面访问父页面元素 parent.document.getElementById('id')和document相关的方法都可以这样用 2.父页面访问子页面元素 document.getEle ...
- asp.net子窗体与父窗体交互
今天在项目上遇到了这个问题,其实只是window.returnValue的简单应用,不是asp.net的专属内容.作为积累,记录一个简单的实现模型. 图1 用到的文件 从图1中我们可以看到,只用到了 ...
- 子窗体与父窗体调用对方js方法
有时候为了减少一个页面内的代码量,会将部分内容放到子窗体中,如后台管理中用iframe来进行管理 <div> <iframe id="dviframe" src= ...
- 子窗体与父窗体传值操作的js示例
//返回值给父窗体 function returnParent(value) {//获取子窗体返回值 var parent = window.dialogArguments; //获取父页面 ...
- 易混淆的Window窗体与父窗体之间位置关系
假设有abc三个窗体,a是最外层窗体,b是a的子窗体,c是b的子窗体 c.Top,c.Left,c.Bottom,c.Location等都是相对于B的左上角点的,子窗体的位置点都是相对于父窗体而言的, ...
- iframe子页面与父页面通信
同域下父子页面的通信 父页面: <!DOCTYPE html> <html> <head lang="en"> <meta charset ...
随机推荐
- 关于 Java 中多线程的面试问题 详解
多线程细节: 1. 面试题: sleep 方法 和 wait 方法异同点是什么? 相同点: 可以让线程 处于 冻结状态. 不同点: 1. sleep 必须指定时间 wait 可以指定时间, 也可以不指 ...
- 描述Linux发行版的系统目录名称命名规则以及用途
linux各种发行版都遵循LSB(Linux Stadards Base)规则,使用一致的相关的基础目录名称,使用根目录系统结构(root filesystem),使用FHS(Files Hierar ...
- 关于Set和Map数据结构的一点学习
关于js的Set和Map结构的学习和记录 对阮一峰老师的ES6入门和网上有关资料的的一点学习和记录 1.Set数据结构 Set构造函数的参数是一个可遍历( iterator)对象 Set中的成员值是唯 ...
- js中关于执行的顺序及变量存放方式的一点记录
Markdown在线编辑器 - www.MdEditor.com 1 首先关于数据类型,有基本数据类型,和引用数据类型 基本数据类型有:number,string,boolean等:引用数据类型一般指 ...
- Apache服务及个人用户主页功能和密码验证
Apache服务程序中有个默认未开启的个人用户主页功能,能够为所有系统内的用户生成个人网站,确实很实用哦 第1步:开启个人用户主页功能: 1.vim /etc/httpd/conf.d/userdir ...
- windows使用docker运行mysql等工具(一)windows安装docker
由于我本地的mysql版本比较低,最近想着要升级一下mysql版本,鉴于docker容器的火热,就想着在本地装个docker环境,然后下载最新版的mysql镜像,完成mysql8.0的安装.电脑是wi ...
- LINQ学习——JOIN
一.JOIN的作用 1.使用联接来结合两个或更多的集合的数据. 2.联接操作接受两个集合然后创建一个临时的对象集合,每一个对象包含原始集合对象中的所有字段. Note:这里是包含而不是这个原实集合的字 ...
- c++中while(cin>>str)和ctrl z的相关问题探讨
对于while (cin>>str)和ctrl z的问题,网上有以下解释: -------------------------------------------------------- ...
- 易初大数据 2019年10月24日 spss笔记 王庆超
数据文件的重置结构:横向结构(个案组),纵向结构,不符合分析方法的时候就需要重组,选定变量重组为个案,数据—重构,重构数据向导,选定变量重组为个案,将选定个案重构位变量,转置所有数据,变量组数目,一个 ...
- php微信卡券logo上传方法
php微信卡券logo上传方法 <pre> $xiangmupath = $this->getxiangmupath(); $logo = $xiangmupath . '/imag ...