js中opener与parent的区别详细解析


Posted in Javascript onJanuary 14, 2014

opener即谁打开我的,比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。

parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面所在窗口就是B页面的parent。在JS中,window.opener只是对弹出窗口的母窗口的一个引用。比如:a.html中,通过点击按钮等方式window.open出一个新的窗口b.html。那么在b.html中,就可以通过window.opener(省略写为opener)来引用a.html,包括a.html的document等对象,操作a.html的内容。

假如这个引用失败,那么将返回null。所以在调用opener的对象前,要先判断对象是否为null,否则会出现“对象为空或者不存在”的JS错误。

示例:
aa.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<span id="name"></span>
<input type="button" " value="弹窗" onclick="window.open('bb.html')" />
</body>
</html

bb.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>无标题文档</title>
 </head>
 <body>
 <input type="text"  id="inputValue"/>
 <input type="button"  value="添加" onclick="window.opener.document.getElementById('name').innerHTML=inputValue.value"/>
 </body>
 </html>

window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了aa.htm上的一个链接而打开了bb.htm,然后我们打算在bb.htm上输入一个值然后赋予aa.htm上的一个id为“name”的textbox中,就可以

写为:
window.opener.document.getElementById("name").value = "输入的数据";
window.opener.document.getElementById("name").innerHTML= "输入的数据";

Javascript 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
js中cookie的添加、取值、删除示例代码
Oct 21 Javascript
jquery实现简单易懂的图片展示小例子
Nov 21 Javascript
JS获取网页属性包括宽、高等等
Apr 03 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
Apr 21 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
Jun 04 Javascript
js实现带圆角的多级下拉菜单效果
Aug 28 Javascript
JS快速实现移动端拼图游戏
Sep 05 Javascript
JS随机数产生代码分享
Feb 24 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
May 26 Javascript
vue实现简单加法计算器
Oct 22 Javascript
javascript条件式访问属性和箭头函数介绍
Nov 17 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 #Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
Jan 14 #Javascript
JavaScript自定义日期格式化函数详细解析
Jan 14 #Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 #Javascript
JS获取各种浏览器窗口大小的方法
Jan 14 #Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 #Javascript
Eclipse下jQuery文件报错出现错误提示红叉
Jan 13 #Javascript
You might like
用文本作数据处理
2006/10/09 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
2020/04/23 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
python 自动重连wifi windows的方法
2018/12/18 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Python之字典添加元素的几种方法
2020/09/30 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
工程专业毕业生自荐信范文
2013/12/25 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
战友聚会策划方案
2014/06/13 职场文书
网络营销实训总结
2015/08/03 职场文书
英语导游欢迎词
2015/09/30 职场文书
公司年会主持词范文!
2019/05/07 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL