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 相关文章推荐
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
浅谈Javascript中匀速运动的停止条件
Dec 19 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
Aug 03 Javascript
js模态对话框使用方法详解
Feb 16 Javascript
iframe高度自适应及隐藏滚动条的实例详解
Sep 29 Javascript
手把手教你使用vue-cli脚手架(图文解析)
Nov 08 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
微信小程序获取用户信息并保存登录状态详解
May 10 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
Nov 10 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 Javascript
JavaScript手写数组的常用函数总结
Nov 22 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
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python使用wxPython实现计算器
2018/01/30 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python处理“
2019/06/10 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
pycharm快捷键汇总
2020/02/14 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
医学生实习自荐信
2013/10/01 职场文书
采购员岗位职责
2013/11/15 职场文书
设计总监岗位职责
2013/12/07 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP