javascript在当前窗口关闭前检测窗口是否关闭


Posted in Javascript onSeptember 29, 2014

在当前窗口关闭前,检测当前窗口是否关闭

<pre name="code" class="html"><pre name="code" class="html"><HTML><HEAD> 
<script Language="JavaScript"> 
window.onbeforeunload=function(event){ 
alert("222"); //这里IE9会执行,CHROME不会执行 
// if(event.clientX>document.body.clientWidth && event.clientY<0||event.altKey){ //如果是刷新,则不提示 
RETURN "确定关闭窗口?"; 
// } 
} 
var aa ; 
var intervalVar; 
function showClose(){ 
console.log(" wait and val is :"+aa.closed); 
clearInterval(intervalVar); 
} 
function loadform(){ 
aa=window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no"); 
console.log("check close before op and val is :"+aa.closed); //现在窗口未关闭,结果为false 
aa.close();<span style="white-space:pre"> </span> //调用窗口关闭的方法 
console.log("not in wait and val is :"+aa.closed); //此时aa.close正在调用过程中,结果为false 
intervalVar = setInterval(showClose,100); }; //用循环检测子窗口是否关闭,其实用setTimeout也是可以的,不过值要设得大一些 
function unloadform(){ alert("2!"); } 
</script> 
</HEAD><BODY OnLoad="loadform()" OnUnload="unloadform()"> 
</BODY></HTML>

在ie9中,如果刷新文档的话,unloadform和onbeforeunload都会执行,如果是关闭页面的话只会执行onbeforeunload事件

值得注意的是,onunload在关闭页面时不会运行,估计此函数为浏览器内置事件,不能重新定义

在chrome中,如果刷新文档的话,unloadform和onbeforeunload都会执行,关闭页面的话,只会执行onbeforeunload,值得注意的是有注释的那一行一直不会执行.

如果是window.open打开的子窗口的话,可以通过window.closed属性检测是否关闭

<HTML><HEAD> 
<script Language="JavaScript"> 
var aa ; 
var intervalVar; 
function showClose(){ 
console.log(" wait and val is :"+aa.closed); 
clearInterval(intervalVar); 
} 
function loadform(){ 
aa=window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no"); 
console.log("check close before op and val is :"+aa.closed); //现在窗口未关闭,结果为false 
aa.close(); //调用窗口关闭的方法 
console.log("not in wait and val is :"+aa.closed); //此时aa.close正在调用过程中,结果为false 
intervalVar = setInterval(showClose,100); }; //用循环检测子窗口是否关闭,其实用setTimeout也是可以的,不过值要设得大一些 
function unloadform(){ alert("2!"); } 
</script> 
</HEAD><BODY OnLoad="loadform()" OnUnload="unloadform()"> <a href="test.htm">调用</a> 
</BODY></HTML>

父窗口关闭时会自动将window.open关闭的代码

<HTML><HEAD> 
<script Language="JavaScript"> 
var aa ; 
var intervalVar; 
window.onbeforeunload=function(event){ 
aa.close(); 
return "hello"; 
} 
function loadform(){ 
aa=window.open('test.htm', 'windowName',"width=200,height=200,scrollbars=no"); 
}; 
function unloadform(){ alert("2!"); } 
</script> 
</HEAD><BODY OnLoad="loadform()" OnUnload="unloadform()"> <a href="test.htm">调用</a> 
</BODY></HTML>
Javascript 相关文章推荐
javascript EXCEL 操作类代码
Jul 30 Javascript
javascript 操作Word和Excel的实现代码
Oct 26 Javascript
js 动态修改css文件用到了cssRule
Aug 20 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
jQuery实现的网格线绘制方法
Jun 20 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
Oct 10 Javascript
Bootstrap table右键功能实现方法
Feb 20 Javascript
自定义vue全局组件use使用、vuex的使用详解
Jun 14 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
微信小程序实现星星评分效果
Nov 01 Javascript
js+csss实现的一个带复选框的下拉框
Sep 29 #Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 #Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 #Javascript
Javascript基础知识(三)BOM,DOM总结
Sep 29 #Javascript
Javascript基础知识(二)事件
Sep 29 #Javascript
Javascript基础知识(一)核心基础语法与事件模型
Sep 29 #Javascript
Javascript表单验证要注意的事项
Sep 29 #Javascript
You might like
PHP环境中Memcache的安装和使用
2015/11/05 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
JavaScript 变量作用域分析
2011/07/04 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python解析nginx日志文件
2015/05/11 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
python实现自动登录
2018/09/17 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
python字符串下标与切片及使用方法
2020/02/13 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
生物制药毕业生自荐信
2013/10/16 职场文书
医院辞职信范文
2014/01/17 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
给校长的建议书500字
2014/05/15 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
见习报告的格式
2014/11/04 职场文书
关于分班的感言
2015/08/04 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android