有一些需要统计登出时间,或者用户离开的时间点等需求,这种需要监听用户离开网页,关闭网页的事件。
pc端有 unload,beforeunload等事件 进行监听
这里有一个博客有详细的记录
js代码:
<body onunload="goodbye()">
//window
window.onbeforeunload=function(e){
var e = window.event||e;
e.returnValue=("确定离开当前页面吗?");
}
View Code
但是移动端并没有关闭浏览器的x或者按钮,移动端关闭浏览器,相当于杀死进程,来关闭,(安全因素)我们是无法监听客户端杀死进程的操作的。
以下这种方法,通用于pc+移动端,能较好地兼容;
通过监听visibilityState的值来判断,用户是否离开了页面 详细介绍
测试机型:
window 谷歌 火狐
ios 微信浏览器,自带浏览器,qq浏览器
小米手机 小米浏览器,微信浏览器,qq浏览器
均可使用。
<script>
var p=document.createElement('p');
p.innerHTML='出去了'
var p1=document.createElement('p');
p1.innerHTML='回来了'
var body=document.getElementsByTagName('body')[0]
document.addEventListener('visibilitychange', function () {
// 用户离开了当前页面
if (document.visibilityState === 'hidden') {
body.appendChild(p)
}
// 用户打开或回到页面
if (document.visibilityState === 'visible') {
body.appendChild(p1)
}
});
</script>