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 相关文章推荐
JavaScript CSS修改学习第一章 查找位置
Feb 19 Javascript
javascript中attachEvent用法实例分析
May 14 Javascript
javascript用函数实现对象的方法
May 14 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
探索angularjs+requirejs全面实现按需加载的套路
Feb 26 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
简单实现vue验证码60秒倒计时功能
Oct 11 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
Dec 06 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 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
开发大型 PHP 项目的方法
2007/01/02 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
非主流的textarea自增长实现js代码
2011/12/20 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
python获取mp3文件信息的方法
2015/06/15 Python
Python实现截屏的函数
2015/07/25 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python实现通讯录功能
2018/02/22 Python
python队列queue模块详解
2018/04/27 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python实现简单日期工具类
2019/04/24 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
参观考察邀请函范文
2014/01/29 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
保研推荐信范文
2015/03/25 职场文书
水电施工员岗位职责
2015/04/11 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
python处理json数据文件
2022/04/11 Python