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针对DOM的应用分析(四)
Apr 15 Javascript
禁止你的左键复制实用技巧
Jan 04 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
Jan 11 Javascript
浅析js中取绝对值的2种方法
Jul 09 Javascript
提高jQuery性能的十个诀窍
Nov 14 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
Aug 04 Javascript
JQuery学习总结【一】
Dec 01 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
Jun 02 Javascript
Vue文本模糊匹配功能如何实现
Jul 30 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
JS 网站性能优化笔记
2011/05/24 PHP
微信支付开发维权通知实例
2016/07/12 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
JavaScript中URL编码函数代码
2011/01/11 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
Python实现读取Properties配置文件的方法
2018/03/29 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
使用索引有什么好处
2016/07/27 面试题
大学校园毕业自我鉴定
2014/01/15 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
优秀教师推荐材料
2014/12/16 职场文书
合同审查法律意见书
2015/06/04 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
学习委员竞选稿
2015/11/20 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers
Go语言grpc和protobuf
2022/04/13 Golang
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers