使用jQuery控制用户操作

时间:2010-05-25 12:16:26

标签: jquery session

如果用户在配置过程中没有采取任何操作,我想写一些javascript来杀死网页上的sestion。 我怎么知道用户没有使用jQuery做任何动作。

非常感谢。

3 个答案:

答案 0 :(得分:3)

您可以捕获整个文档的mousedown和keydown事件,然后设置超时以在未在特定时间范围内引发事件时运行:

<html>
  <head>
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>

    <script type="text/javascript">
        var _idleEventId = null;
        var _idleMaxMilliSeconds = 10000;

        function OnIdle() {
            alert('You\'re idle!');
        }

        $(document).bind("mousedown keydown", function() {
            clearTimeout(_idleEventId);
            _idleEventId = setTimeout(OnIdle, _idleMaxMilliSeconds);
        });

        $(document).ready(function() {
            _idleEventId = setTimeout(OnIdle, _idleMaxMilliSeconds);
        });
    </script>
  </head>
  <body>
    Hello World
  </body>
</html>

答案 1 :(得分:2)

如何使用cookie以防万一:http://www.w3schools.com/JS/js_cookies.asp

然后我会喜欢这个

注意:只是未经测试的概念验证!

setInterval("checkForActivity()", 5000); //set a reasonable time..

function checkForActivity() {
    var user_has_moved_at = (new Date()).getTime(); //generate a time
    var time_elapsed = getCookie( COOKIE_NAME ); //get a time from previous stored
    //check how many time is passed from last move
    if ( ( user_has_moved_at - time_elapsed ) < 3600 ) { 
     //less then 1 hour.. user is still here..
        $(document.body).bind('mousemove',
        function() {
         // so update the fresh air...
            setCookie( COOKIE_NAME , user_has_moved_at);
         // unbind event
            $(document.body).unbind('mousemove');
        });

    } else {
     // more then 1 hour... destroy cookie... user is out
        setCookie(COOKIE_NAME, null); //destroy cookie
    }

};

答案 2 :(得分:1)

要检查用户没有做任何事情,您可以观察表示用户互动的事件:

var last_seen = 0;
var timeout = null;
$('body').mousemove(function () {
  last_seen = (new Date()).getTime();
  window.clearTimeout(timeout);
  timeout = window.setTimeout(clear_da_session, 10000);
});
/* ...  and likewise for things like
   $('input').focus();
   $('a').click();
   and 'keypress' events
*/

clearTimeoutsetTimeout内容会在未触发任何列出的事件一段时间后处理某事(即clear_da_session函数)。

但是,我想再次强调我上面的评论:不要在家里这样做,孩子们!使用您的服务器语言所拥有的任何内容。这比尝试追踪某些东西更可靠,这可能是不可追踪的。