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优先加载笔记代码
Sep 30 Javascript
jquery中ajax调用json数据的使用说明
Mar 17 Javascript
JS实现图片预加载无需等待
Dec 21 Javascript
javascript之typeof、instanceof操作符使用探讨
May 19 Javascript
jtable列中自定义button示例代码
Nov 21 Javascript
jquery判断单选按钮radio是否选中的方法
May 05 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
Jul 14 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 jQuery
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解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
JS验证不重复验证码
2017/02/10 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python实现excel读写数据
2021/03/02 Python
python 多线程串行和并行的实例
2019/02/22 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
使用python实现简单五子棋游戏
2019/06/18 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python是否适合网页编程详解
2019/10/04 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
史上最全面的Java面试题汇总!
2015/02/03 面试题
高级技校毕业生自荐信
2013/11/18 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
心得体会格式及范文
2016/01/25 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
Nginx动静分离配置实现与说明
2022/04/07 Servers