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 相关文章推荐
jQuery 动画基础教程
Dec 25 Javascript
cnblogs TagCloud基于jquery的实现代码
Jun 11 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
Backbone.js中的集合详解
Jan 14 Javascript
学习JavaScript设计模式之观察者模式
Apr 22 Javascript
使用jQuery UI库开发Web界面的简单入门指引
Apr 22 Javascript
JS弹出窗口插件zDialog简单用法示例
Jun 12 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
JS实现自定义状态栏动画文字效果示例
Oct 12 Javascript
详解vue + vuex + directives实现权限按钮的思路
Oct 24 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 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数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
php array的学习笔记
2012/05/16 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
javascript中clone对象详解
2014/12/03 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
Js apply方法详解
2017/02/16 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
python图像处理之反色实现方法
2015/05/30 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
Python实现视频下载功能
2017/03/14 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
实例详解Python装饰器与闭包
2019/07/29 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
社会实践自我鉴定
2013/11/07 职场文书
《金子》教学反思
2014/04/13 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS