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 操作单选框,复选框,下拉列表实现代码
Oct 27 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
Nov 12 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
Dec 02 Javascript
jquery常用技巧及常用方法列表集合
Apr 06 Javascript
js实现飞入星星特效代码
Oct 17 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
Aug 24 Javascript
js实现精确到毫秒的倒计时效果
Aug 05 Javascript
js实现文字截断功能
Sep 14 Javascript
JavaScript结合HTML DOM实现联动菜单
Apr 05 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
Sep 23 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 函数中使用static的说明
2012/06/01 PHP
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
JavaScript闭包的简单应用
2017/09/01 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
js代码实现轮播图
2020/05/04 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
Python 列表(List)操作方法详解
2014/03/11 Python
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
python 异或加密字符串的实例
2018/10/14 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
卫校中专生个人自我评价
2013/09/19 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
企业标语口号
2014/06/10 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
python使用BeautifulSoup 解析HTML
2022/04/24 Python
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python