关闭和刷新都会用到两个事件:
1.window.onbeforeunload :窗口关闭或刷新前触发
2.window.onunload:窗口关闭或刷新后触发
开始我的解决思路是在window.onbeforeunload时机在session中存一个值,然后在window.onunload时机查看session中有没有这个值 如果有说明是刷新,如果没有说明是关闭,尝试以后发现没有效果。后来上网查寻发现浏览器网页关闭和刷新是有区别的,他们的区别就在于刷新的window.onbeforeunload和window.onunload的时间差通常在10毫秒以上,而关闭的window.onbeforeunload和window.onunload的时间差通常在3毫秒以下,通过这个时间差就可以确定是刷新还是关闭。
解题方法如下:
var beginTime = 0;//执行onbeforeunload的开始时间
var differTime = 0;//时间差
window.onunload = function (){
differTime = new Date().getTime() - beginTime;
if(differTime <= 5) {
console.log("浏览器关闭") // 这儿可以放浏览器关闭时的执行代码
}else{
console.log("浏览器刷新") // 这儿可以放浏览器刷新时的执行代码
}
}
window.onbeforeunload = function (){
beginTime = new Date().getTime();
};