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 相关文章推荐
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
javascript学习总结之js使用技巧
Sep 02 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 Javascript
详解AngularJS ui-sref的简单使用
Apr 24 Javascript
JavaScript中offsetWidth的bug及解决方法
May 17 Javascript
vue插件vue-resource的使用笔记(小结)
Aug 04 Javascript
微信小程序实用代码段(收藏版)
Dec 17 Javascript
详解Vue的watch中的immediate与watch是什么意思
Dec 30 Javascript
在vue-cli创建的项目中使用sass操作
Aug 10 Javascript
JS实现无限轮播无倒退效果
Sep 21 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获取远程图片并把它保存到本地的代码
2008/04/07 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
JS跨域问题详解
2014/11/25 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python连接phoenix的方法示例
2017/09/29 Python
python发送告警邮件脚本
2018/09/17 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
员工升职自荐信
2015/03/27 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
Redis三种集群模式详解
2021/10/05 Redis