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 相关文章推荐
js每次Title显示不同的名言
Sep 25 Javascript
兼容主流浏览器的iframe自适应高度js脚本
Jan 10 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 Javascript
node.js中的fs.readlink方法使用说明
Dec 17 Javascript
javascript设计模式之对象工厂函数与构造函数详解
Jul 30 Javascript
JS实现可关闭的对联广告效果代码
Sep 14 Javascript
Node.js实现文件上传
Jul 05 Javascript
easyui combogrid实现本地模糊搜索过滤多列
May 13 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
JS请求servlet功能示例
Jun 01 Javascript
详解VueJS应用中管理用户权限
Feb 02 Javascript
JavaScript indexOf()原理及使用方法详解
Jul 09 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 判断常量,变量和函数是否存在
2009/04/26 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
python中as用法实例分析
2015/04/30 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
Python API自动化框架总结
2019/11/12 Python
python db类用法说明
2020/07/07 Python
python使用列表的最佳方案
2020/08/12 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
青安岗事迹材料
2014/05/14 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
政审证明范文
2015/06/19 职场文书
处罚决定书范文
2015/06/24 职场文书
DE1103使用报告
2022/04/05 无线电
python中的random模块和相关函数详解
2022/04/22 Python