0

我正在尝试编写一个 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!');
    });
4

1 回答 1

0

您的代码在许多方面似乎存在缺陷,尤其是因为您每分钟都在检查用户是否进行了交互。假设用户在检查前 1 秒进行了交互。第一次检查(用户交互后 59 秒)什么都不做,然后在 1:59 进行第二次检查显示警报。用户已近两分钟处于非活动状态,而不是 1 分钟。

作为解决方案怎么样:http: //jsfiddle.net/xAzNN/5/

于 2012-05-20T08:24:00.997 回答