2012-05-20 3 views
0

사용자가 마지막 순간에 키를 클릭했거나 스크롤했거나 충돌했는지 확인하는 jQuery 스크립트를 작성하려고합니다. 그렇다면 다음 간격 (1 분)에 경고가 표시되어야합니다. 그렇지 않은 경우 페이지가 1 시간 이내에로드 된 경우 1 분 간격으로 경고를 표시합니다.jQuery keepalive with actions

이것은 제대로 작동하는 것처럼 보이지만 그렇지 않습니다. 모든 아이디어 :

$(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

왜 당신이 (상관없이 상호 작용) 1 시간 후 간격 체크를 지우고있다? – Grezzo

+0

사이트 세션이 1 시간 후에 만료되고 활성 상태인지 계속 확인하기 위해 필요하지 않기 때문에. – WhiskeyMike

답변

0

사용자 코드가 여러 가지 방법으로 결함이있는 것 같습니다. 사용자가 상호 작용 한 경우 매분마다 확인하기 때문에. 사용자가 수표보다 1 초 전에 상호 작용했다고 간주합니다. 첫 번째 검사 (사용자가 상호 작용 한 후 59 초)는 아무 효과가 없으며 1:59의 두 번째 검사는 경고를 표시합니다. 사용자는 거의 2 분 동안 비활성 상태하지

1. 방법에 대한이 해결책으로 : http://jsfiddle.net/xAzNN/5/

+0

실제로 그 코드는 정말 좋은 코드이며 Grezzo에게 감사드립니다. 다음을 언급해야합니다 : -이 코드는 사용자가 에 로그인 한 경우에만 실행됩니다. 경고 대신 최종 코드가 데이터베이스의 "last_activity"필드를 업데이트하는 파일을 ping합니다. .. 따라서 나는 사용자가 실제로 비활성 일 때만 설정 간격으로 설정해야합니다. – WhiskeyMike

+0

저는 실제로 수정을 한 후에 타이머를 성공적으로 작동 시켰습니다. 이제 제 문제는 $ .get입니다. 작동하지 않는 것 같습니다. 나는 또한 작동했던 .ajax를 시도했지만, 무한 루프로 매초마다 파일을 핑 (ping)했다. ... 나는 원하지 않는다 .'code' $ .get (" ", function() { return; }); – WhiskeyMike

+0

문제 없습니다. 나는 ... jQuery 아약스를 다룰 때부터 약간의 시간이 걸렸습니다. (실제로 아약스는 jQuery와 아약스 만 취미 웹 애플리케이션을 만들 수있는 방법으로 배웠기 때문에 가능하지 않을 수도 있습니다.) 당신을 도울 것입니다. 아마도 또 다른 질문을 시작합니까? – Grezzo