7
回答
JS或者Jquery如何监控某个用户在某个页面停留30分钟,并在30分钟清除cookie而且弹框告诉用户超时已退出。
科大讯飞通用文字识别100000次/天免费使用。立即申请   
需求是这个,需要在监控用户在网站上停留30分钟后,就把当前用户退出,并且给予提示,


请问如何实现,那个监控的js我不会写,我想的是,

一种是监控到了时间后 ,执行一个清除cookie的操作,js能实现吗?

二种是去调用控制器下的清除session的方法,我的是CI框架,第二种应该用ajax吧?


不太会,求大神指点。。。。
举报
星落凡辰
发帖于2年前 7回/1K+阅
共有7个答案 最后回答: 2年前
var maxTime = 30*60; // seconds
var time = maxTime;
$('body').on('keydown mousemove mousedown', function(e){
    time = maxTime; // reset
});
var intervalId = setInterval(function(){
    time--;
    if(time <= 0) {
        ShowInvalidLoginMessage();
        clearInterval(intervalId);
    }
}, 1000)
function ShowInvalidLoginMessage(){
   // 清除cookie
   // 提示用户
   // 该干嘛干嘛
}



--- 共有 2 条评论 ---
星落凡辰回复 @蓝水晶飞机 : 明白明白了,我自己开了点脑洞,谢谢 2年前 回复
蓝水晶飞机你问该怎么写呢,页面操作监控已经实现啦。 剩下的弹个提示窗口、具体你要怎么做要自己去考虑。 如果期间有发送请求给服务端,那Session可能又延长有效期了。 我觉得不适合提供专门的接口去查询用户在线状态。 2年前 回复

和js没什么关系。主要是:登录用户过期时间设置成30分钟失效就行了。

至于你登录用户是存在session中呢,还是cookie中呢,那是你的系统设计问题。和计时器什么的,都没关系,只要把登录用户超时时间设置成30分钟就一切搞定了。

停留30分钟的意思就是30分钟没有产生到服务器的请求.
这样的cookie过期时间设为30分钟后就好了,每次操作请求都更新cookie过期时间.
并且每次请求页面都执行setTimeout定时30分钟后弹出提示,并clearTimeout清除旧的定时任务.

(function () {
    var startTime = (new Date).getTime(),  //进入页面时间
        interval = 0,  //进入页面到现在间隔了多少秒
        clock;

    //每500毫秒计算一次
    clock = setInterval(function () {
        interval = Math.ceil(((new Date).getTime() - startTime) / 1000);
        if (interval > 60 * 30) {
            clearInterval(clock);
            callback();
        }
    }, 500);

    function callback() {
        //TODO clear cookies
        alert('cookies过期');
    }
}());



顶部