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 相关文章推荐
JS网络游戏-(模拟城市webgame)提供的一些例子下载
Oct 14 Javascript
三级下拉菜单的js实现代码
May 23 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
Sep 10 Javascript
JS实现一个按钮的方法
Feb 05 Javascript
jQuery编程中的一些核心方法简介
Aug 14 Javascript
jQuery中的siblings用法实例分析
Dec 24 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
Jun 24 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
Jan 18 Javascript
vue-cli监听组件加载完成的方法
Sep 07 Javascript
解决vue热替换失效的根本原因
Sep 19 Javascript
ES6模板字符串和标签模板的应用实例分析
Jun 25 Javascript
JS实现网页烟花动画效果
Mar 10 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类中Static方法效率测试代码
2010/10/17 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
Laravel日志用法详解
2016/10/09 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
python连接mysql并提交mysql事务示例
2014/03/05 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
python如何保存文本文件
2020/06/07 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
校领导推荐信
2013/11/01 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
成语的广告词
2014/03/19 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
2015年三万活动总结
2015/03/25 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫