js父窗口关闭时子窗口随之关闭完美解决方案


Posted in Javascript onApril 29, 2014

最近,遇到一个权限管理的系统。由于权限管理的系统和本来的系统风格不一致,所有新打开一个窗口。问题就来了,admin注销之后,权限管理的窗口没有关闭。其他普通用户登录以后,仍然可以操作权限管理的窗口。

问题简化:admin注销的时候,或者main.html关闭的时候,打开的所有新窗口一起关闭。问题就解决了

直接看代码吧:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body onUnload="closeNews();"> <a href="#" onclick="openNew('http://www.baidu.com','nihao')">打开新窗口</a> 
<a href="#" onclick="logOut();">退出登录</a> 
</body> 
</html> 
<script> 
//用户记录所有打开的子窗口 
var win_Array = new Array(); 
var win_num = -1; 
//每次打开一个新窗口都记录下来 
function openNew(uri,param){ 
win_num = win_num+1; 
win_Array[win_num] = window.open(uri); 
} 
//用户注销的时候,执行关闭方法。body添加onUnload = "closeNews();" 当main窗口关闭时候,所有的子窗口关闭 
function closeNews(){ 
//关闭权限管理 
if(win_Array.length > 0){ 
for(var i = 0;i <= win_Array.length;i++){ 
var win_one = win_Array[i]; 
if(win_one != undefined){ 
win_one.close(); 
} 
} 
} 
} 
function logOut(){ 
//关闭子窗口 
closeNews(); 
//退出登录 
} 
</script>

说明一下:

<body onUnload="closeNews();">在body上添加onUnload事件很重要。即:当窗口关闭以后,执行关闭所有子窗口的方法。

测试:在web项目中,ie8,ie10,火狐,chrome,opera都没有问题。

一旦不放倒wen容器中,只是静态的 main.html页面的时候,ie有问题,因为静态的时候,ie的window.open()居然是打开新页面,不是打开新标签。所有关闭窗口的方法不再有效。

时间有限,还没有花精力去细究,还望知道为什么的js技术大神 可以指导一下。再次致谢。

Javascript 相关文章推荐
JavaScript中Array 对象相关的几个方法
Dec 22 Javascript
微信小程序  modal弹框组件详解
Oct 27 Javascript
javascript事件的绑定基础实例讲解(34)
Feb 14 Javascript
基于JavaScript实现拖动滑块效果
Feb 16 Javascript
vue-router实现webApp切换页面动画效果代码
May 25 Javascript
Angular 4中如何显示内容的CSS样式示例代码
Nov 06 Javascript
layui实现table加载的示例代码
Aug 14 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
浅谈小程序globalData的那些事儿
Nov 01 Javascript
js实现中文实时时钟
Jan 15 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 Javascript
JS截取url中问号后面参数的值信息
Apr 29 #Javascript
javascript类型转换示例
Apr 29 #Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 #Javascript
javascript中使用正则计算中文长度的例子
Apr 29 #Javascript
一个简单的Node.js异步操作管理器分享
Apr 29 #Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 #Javascript
javascript的创建多行字符串的7种方法
Apr 29 #Javascript
You might like
Discuz! Passport 通行证整合
2008/03/27 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
json数据的列循环示例
2013/09/06 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python实现二叉搜索树
2016/02/03 Python
python字符串string的内置方法实例详解
2018/05/14 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
python 简单的调用有道翻译
2020/11/25 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
《长城和运河》教学反思
2014/04/14 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
承诺书范本
2015/01/21 职场文书
2015年化验员工作总结
2015/04/10 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android