0

ユーザーが最後の1分以内にクリック、スクロール、またはキーを押したかどうかを確認する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 の 2 回目のチェックでアラートが表示されます。ユーザーは 1 分間ではなく、2 分間近く非アクティブでした。

解決策としてこれはどうですか:http://jsfiddle.net/xAzNN/5/

于 2012-05-20T08:24:00.997 に答える