函数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 相关文章推荐
JavaScript游戏之优化篇
Nov 08 Javascript
基于jquery DOM写的类似微博发布的效果
Oct 20 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
教你如何使用node.js制作代理服务器
Nov 26 Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
关于axios如何全局注册浅析
Jan 14 Javascript
详解如何用webpack4从零开始构建react开发环境
Jan 27 Javascript
原生js实现瀑布流效果
Mar 09 Javascript
小程序实现列表展开收起效果
Jul 29 Javascript
百度地图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图片上传类带图片显示
2006/11/25 PHP
相对路径转化成绝对路径
2007/04/10 PHP
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
自荐信包含哪些内容
2013/10/30 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
Python实现自动玩连连看的脚本分享
2022/04/04 Python