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和Ajax中文乱码吐血版解决方案
Dec 21 Javascript
js 函数调用模式小结
Dec 26 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
Apr 05 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
Oct 29 jQuery
Vue源码学习之关于对Array的数据侦听实现
Apr 23 Javascript
angula中使用iframe点击后不执行变更检测的问题
May 10 Javascript
Element InfiniteScroll无限滚动的具体使用方法
Jul 27 Javascript
解决vue动态下拉菜单 有数据未反应的问题
Aug 06 Javascript
vue 使用lodash实现对象数组深拷贝操作
Sep 10 Javascript
JS精髓原型链继承及构造函数继承问题纠正
Jun 16 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
脚本收藏iframe
2006/07/21 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python3实现连接SQLite数据库的方法
2014/08/23 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python中多线程及程序锁浅析
2015/01/21 Python
python WindowsError的错误代码详解
2017/07/23 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
新手学python应该下哪个版本
2020/06/11 Python
Python必须了解的35个关键词
2020/07/16 Python
python3中编码获取网页的实例方法
2020/11/16 Python
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
班会关于环保演讲稿
2013/12/29 职场文书
中学家长会邀请函
2014/01/17 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
小学数学课题方案
2014/06/15 职场文书
营销学习心得体会
2014/09/12 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
经费申请报告范文
2015/05/18 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL