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 学习笔记 选择器之四
Jul 23 Javascript
js正则表达式的使用详解
Jul 09 Javascript
extjs表格文本启用选择复制功能具体实现
Oct 11 Javascript
jQuery 删除或是清空某个HTML元素示例
Aug 04 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
JavaScript插件化开发教程 (二)
Jan 27 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
基于javascript实现最简单的选项卡切换效果
May 16 Javascript
JS实现DOM删除节点操作示例
Apr 04 Javascript
js合并两个数组生成合并后的key:value数组
May 09 Javascript
JS中比较两个Object数组是否相等方法实例
Nov 11 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
用python实现的线程池实例代码
2018/01/06 Python
python如何使用unittest测试接口
2018/04/04 Python
selenium+python环境配置教程详解
2019/05/28 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
python如何保存文本文件
2020/06/07 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
法国家具及室内配件店:home24
2017/01/21 全球购物
佳能德国网上商店:Canon德国
2017/03/18 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
大型演出策划方案
2014/05/28 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
运动会新闻稿
2015/07/17 职场文书
Python Matplotlib绘制两个Y轴图像
2022/04/13 Python