当我们在浏览网站时,在一定时间在当前网站无任何操作,使用Ajax实现自动退出功能。
分析需求,用户无操作退出。如何友好的提示提示用户?如何做判定用户在一定时间没有任何操作?在js中我们可以通过鼠标按下移动事件,键盘事件等来进行判定。
<!-- 判断用户一段时间有无操作,若没有自动退出 -->
<script type="text/javascript">
var maxTime = 600; // seconds
var time = maxTime;
$('body').on('keydown mousemove', function(e){
time = maxTime; // reset
});
var intervalId = setInterval(function(){
time--;
if(time <= 0) {
logout();
clearInterval(intervalId);
}
}, 1000)
function logout(){ //无效的登录信息 退出登录
var out = 1; //设置一个虚拟值 发送ajax 请求logout方法
$.ajax({
url:"{:url('Login/logout')}", //发送Ajax请求
type:"post",
data:{out:out},
cache: false,
processData: false,
contentType: false,
success:function(response){
if(response.returnCode == 0){
layer.open({
content: '登录超时 (600 秒未活动),请重新登录。',
btn: ['确认'],
yes: function(index, layero) {
window.location.href="{:url('Login/login')}";
},
});
}
},
});
}
</script>
这段js代码只需要写在你引用的公共模板里面就能实现判断。使用JS比较与PHP端进行判定对于用户来讲更加友好一点