如果用户在配置过程中没有采取任何操作,我想写一些javascript来杀死网页上的sestion。 我怎么知道用户没有使用jQuery做任何动作。
非常感谢。
答案 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
*/
clearTimeout
和setTimeout
内容会在未触发任何列出的事件一段时间后处理某事(即clear_da_session
函数)。
但是,我想再次强调我上面的评论:不要在家里这样做,孩子们!使用您的服务器语言所拥有的任何内容。这比尝试追踪某些东西更可靠,这可能是不可追踪的。