函数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 相关文章推荐
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
详解JavaScript函数对象
Nov 15 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
Dec 21 Javascript
浅谈ECMAScript6新特性之let、const
Aug 02 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
Vue infinite update loop的问题解决
Apr 23 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 Javascript
Node.js API详解之 util模块用法实例分析
May 09 Javascript
利用promise及参数解构封装ajax请求的方法
Mar 24 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实现文件编码批量转换
2014/03/10 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
accesskey 提交
2006/06/26 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
python处理中文编码和判断编码示例
2014/02/26 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
Python 自由定制表格的实现示例
2020/03/20 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
navabi英国:设计师大码女装
2019/06/25 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
表彰会主持词
2014/03/26 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript
关于 Python json中load和loads区别
2021/11/07 Python