函数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 相关文章推荐
Chosen 基于jquery的选择框插件使用方法
May 30 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
Oct 13 Javascript
jquery.zclip轻量级复制失效问题
Jan 08 Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 08 Javascript
js实现时钟定时器
Mar 26 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 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基础之运算符的使用方法
2013/04/28 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
英语系本科生求职信范文
2013/12/18 职场文书
大学生村官任职感言
2014/01/09 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2014年居委会工作总结
2014/12/09 职场文书
骨干教师个人总结
2015/02/11 职场文书
运动会表扬稿范文
2015/05/05 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
赢在中国观后感
2015/06/02 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android