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 AJAX 框架的使用方法
Nov 03 Javascript
从零学jquery之如何使用回调函数
May 16 Javascript
js用Date对象的setDate()函数对日期进行加减操作
Sep 18 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
Dec 14 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
Mar 31 Javascript
Javascript基础教程之比较null和undefined值
May 16 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
VUE中的无限循环代码解析
Sep 22 Javascript
JavaScript中的执行环境和作用域链
Sep 04 Javascript
Vant picker 多级联动操作
Nov 02 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 Javascript
Vue与React的区别和优势对比
Dec 18 Vue.js
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使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php中static和const关键字用法分析
2016/12/07 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
python图像处理之反色实现方法
2015/05/30 Python
深入学习Python中的装饰器使用
2016/06/20 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
python自动发送邮件脚本
2018/06/20 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
公司节能减排方案
2014/05/16 职场文书
语文教师个人工作总结
2015/02/06 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书