javascript父子页面通讯实例详解


Posted in Javascript onJuly 17, 2015

本文实例讲述了javascript父子页面通讯的实现方法。分享给大家供大家参考。具体分析如下:

如果一个domain为 www.abc.com的页面内部包含一个name属性值为childFrame的iframe,并且这个iframe的domain为 static.abc.com。那么可以通过设置父页面的domain为abc.com,子页面的domain也为abc.com,然后实现父子页面通讯(我这里有点混淆父子页面和跨域的概念。

不采用上面的方法也是可以实现父子页面相互访问的。
方法是:在父页面用window.frames[0]或者window.frames["childFrame"],返回的是一个Window对象,然后就可以通过:

var childWindow = window.frames[0];
// 或者 window.frames["childFrame"] 或者直接childFrame 或者childFrame.window 
var childDoc = childWindow.contentDocument || childWindow.document;

利用childWindow可以访问执行子页面定义的函数,利用childDoc可以访问子页面的DOM节点。

而子页面要访问父页面,可以通过parent(Window对象),如果一个页面已经是顶级页面那么parent==self将返回true:

if(parent != self) {
// 当前页面有父页面 
  // 调用父页面的函数 
  parent.parentFunc(); 
  var parentDoc = parent.contentDocument || parent.document; 
  // 访问父页面的DOM节点 
}

www.abc.com父页面:

document.domain = 'abc.com';
var ifr = document.createElement('iframe');
ifr.src = 'http://static.abc.com/';
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function(){
  var doc = ifr.contentDocument || ifr.contentWindow.document;
  // 在这里操纵子页面
  alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue);
};

www.static.abc.com子页面:

document.domain = 'abc.com';

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
document.createElement()用法
Mar 13 Javascript
java与javascript之间json格式数据互转介绍
Oct 29 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
May 10 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
Dec 13 Javascript
js实现分页功能
May 24 Javascript
Express + Session 实现登录验证功能
Sep 08 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
微信小程序如何自定义table组件
Jun 29 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
javascript实现的闭包简单实例
Jul 17 #Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
Jul 17 #Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 #Javascript
JavaScript之AOP编程实例
Jul 17 #Javascript
js+html5实现可在手机上玩的拼图游戏
Jul 17 #Javascript
javascript封装的sqlite操作类实例
Jul 17 #Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
Jul 17 #Javascript
You might like
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
vue中appear的用法
2017/08/17 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
2015试用期转正工作总结
2014/12/12 职场文书
单位实习鉴定评语
2015/01/04 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript