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的一句代码实现表格的简单筛选
Jul 26 Javascript
jquery利用event.which方法获取键盘输入值的代码
Oct 09 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 Javascript
Javascript基础教程之数据类型转换
Jan 18 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
Apr 21 Javascript
Jquery 效果使用详解
Nov 23 Javascript
学习JavaScript设计模式之策略模式
Jan 12 Javascript
JavaScript登录记住密码操作(超简单代码)
Mar 22 Javascript
浅谈struts1 & jquery form 文件异步上传
May 25 jQuery
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
vue-simple-uploader上传成功之后的response获取代码
Sep 07 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设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
python复制文件的方法实例详解
2015/05/22 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python算法题 链表反转详解
2019/07/02 Python
Python代码太长换行的实现
2019/07/05 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
校长个人总结
2015/03/03 职场文书
聘任通知书
2015/09/21 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
mysql事务隔离级别详情
2021/10/24 MySQL
mysql数据库如何转移到oracle
2022/12/24 MySQL