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编程开发中的五个实用小技巧
Jul 22 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 Javascript
javascript动态创建链接的方法
May 13 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
js实现倒计时效果(小于10补零)
Mar 08 Javascript
express如何使用session与cookie的方法
Jan 30 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
Oct 13 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
Feb 05 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执行速率优化技巧小结
2008/03/15 PHP
PHP+MySQL 制作简单的留言本
2009/11/02 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP闭包实例解析
2014/09/08 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
Prototype RegExp对象 学习
2009/07/19 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
JS原型链怎么理解
2016/06/27 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
JS实现简单打字测试
2020/06/24 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
解决pycharm界面不能显示中文的问题
2018/05/23 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
详细分析Python collections工具库
2020/07/16 Python
Python多线程的退出控制实现
2020/08/10 Python
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
应届毕业生自荐信
2014/05/28 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python