函数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 相关文章推荐
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
js+css在交互上的应用
Jul 18 Javascript
jquery插件之easing 动态菜单
Aug 21 Javascript
利用毫秒减值计算时长的js代码
Sep 22 Javascript
jquery自定义函数的多种方法
Jan 09 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
js点击选择文本的方法
Feb 09 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
jQuery实现扑克正反面翻牌效果
Mar 10 Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 Javascript
django使用channels2.x实现实时通讯
Nov 28 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 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多维数组排序array详解
2017/11/21 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
一个简单的js动画效果代码
2010/07/20 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
Javascript的闭包详解
2014/12/26 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python装饰器使用实例详解
2019/12/14 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
学雷锋宣传标语
2014/06/25 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
化验室安全管理制度
2015/08/06 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript