我正在尝试编写一个jQuery脚本,该脚本会检查用户是否在最后一刻内点击,滚动或点击了某个键。如果是这样,它应该在下一个间隔(1分钟)显示警报。如果没有,只要页面在1小时内加载,它仍会每1分钟显示一次警报。
这似乎应该有效,但事实并非如此。任何想法:
$(function() {
var initialPageLoad = new Date().getTime();
var lastSiteAction = 0;
var checkInterval = setInterval(function(){
if(Date().getTime() - lastSiteAction > 60000){
if(Date().getTime() - initialPageLoad > 3601000){
clearInterval(checkInterval);
}else{
alert('Tried to checkin! You have not done anything in the last minute.');
}
}else{
alert('Tried to checkin! You have done something in the last minute.')
}
}, 60000); // 1 mins * 60 * 1000
$(document).keydown(function(){
lastSiteAction = new Date().getTime();
});
$(document).scroll(function(){
lastSiteAction = new Date().getTime();
});
$(document).mousedown(function(){
lastSiteAction = new Date().getTime();
});
alert('loaded!');
});
答案 0 :(得分:0)
您的代码在很多方面都存在缺陷,尤其是因为如果用户进行了互动,您每分钟都会检查一次。考虑用户在检查前进行了1秒的互动。第一次检查(用户交互后59秒)什么都不做,然后在1:59的第二次检查显示警报。用户已处于非活动状态近两分钟,而不是1分钟。
这是一个解决方案:http://jsfiddle.net/xAzNN/5/