函数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得到XML某节点的子节点个数的脚本
Oct 11 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
JS实现可展开折叠层的鼠标拖曳效果
Oct 09 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
js实现密码强度检验
Jan 15 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
vue的$http的get请求要加上params操作
Nov 12 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
网站当前的在线人数
2006/10/09 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
js随机生成一个验证码
2017/06/01 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
BootStrap的双日历时间控件使用
2017/07/25 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python的类实例属性访问规则探讨
2015/01/30 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Python中GIL的使用详解
2018/10/03 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
小学毕业感言300字
2014/02/19 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
安全保证书
2015/01/16 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
利用JavaScript写一个简单计算器
2021/11/27 Javascript