函数window.open实现关闭所有的子窗口


Posted in Javascript onAugust 03, 2015

此文介绍了如何用window.open方法打开一个子窗口,当我们要关闭主窗口时,这时候所有的子窗口也会跟着关闭。下面有我的实现思路和代码,分享给大家。

实现思路:
1.打开子窗口函数window.open(url,winName)的第二个参数winName可以唯一标识打开的窗口。因此关闭子窗口只需要使用winName.close()函数即可。
2.一个页面可能有多个子窗口。因此需要一个数组存储所有子窗口对象。关闭时,遍历数组即可。
3.子窗口还可以再打开子窗口。无限循环下去。因此需要判断。
此需求可以通过两个方法实现。

调用子窗口的关闭函数。
此方法易于理解,但是实际实现过程中发现浏览器的关闭事件并没有。且需要是按钮点击关闭还是快捷键关闭,稍微麻烦一些、递归关闭子窗口
此方法实现简单,缺点就是所有的窗口存储子窗口的对象数组需同名

下面是使用递归关闭子窗口及子窗口的子窗口方法

function closeSonWindow(win){
  for(var index=0;index<win.length;index++){
    //如果窗口已关闭
    if(win[index].closed){
      continue;
    }
    //如果窗口没有可以打开的子窗口
    if(typeof(win[index].openedWindow)=="undefined"){
      win[index].close();
      continue;
    }
    if(win[index].openedWindow.length==0){
      win[index].close();
    }else{
      closeSonWindow(win[index].openedWindow);
      win[index].close();
    }
  }
}

以上就是本文的全部叙述,希望对大家有所帮助。

Javascript 相关文章推荐
用js实现预览待上传的本地图片
Mar 15 Javascript
浅析JS中document对象的一些重要属性
Mar 06 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
JS控制伪元素的方法汇总
Apr 06 Javascript
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
Webstorm2016使用技巧(SVN插件使用)
Oct 29 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
基于Express框架使用POST传递Form数据
Aug 10 Javascript
js实现图片上传即时显示效果
Sep 30 Javascript
Vue中fragment.js使用方法小结
Feb 17 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 Javascript
Vue组件更新数据v-model不生效的解决
Apr 02 Vue.js
百度地图api如何使用
Aug 03 #Javascript
javascript实现输出指定行数正方形图案的方法
Aug 03 #Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 #Javascript
javascript常见数据验证插件大全
Aug 03 #Javascript
javascript自定义in_array()函数实现方法
Aug 03 #Javascript
JavaScript简单修改窗口大小的方法
Aug 03 #Javascript
javascript实现随机读取数组的方法
Aug 03 #Javascript
You might like
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
jquery中ajax学习笔记一
2011/10/16 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python实现控制台打印的方法
2019/01/12 Python
浅谈Python 递归算法指归
2019/08/22 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
物理专业大学生职业生涯规划书
2014/02/07 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
个人汇报材料范文
2014/12/30 职场文书
个人年底工作总结
2015/03/10 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
大学军训口号大全
2015/12/24 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
Redis集群的关闭与重启操作
2021/07/07 Redis
Win10 Anaconda安装python-pcl
2022/04/29 Servers