回答
您可以捕获整个文档,然后设置一个超时运行,如果该事件没有在一定时间内提高了鼠标按下和的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>
谢谢,但是与其他所有事件(如鼠标移动,鼠标点击或任何其他用户活动)有什么关系? – eomeroff 2010-05-25 12:41:07
只需将它们添加为绑定参数:bind(“mousedown keydown mousemove etc”),在http://api.jquery.com/category/events/ – 2010-05-25 13:37:40
要检查,该用户没有做任何事情,你可以留意是否意味着用户交互事件:
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
功能)有些时候没有发布任何列出的事件。
但是,我想重新强调一下我的评论:不要在家里做这个,孩子们!使用你的服务器端语言。这远比试图追踪某些东西更可靠,这可能是无法追踪的。
如何使用饼干,以防万一: 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
}
};
找到整个列表我必须承认,这是一个很好的技巧。 +1 – Boldewyn 2010-05-25 14:07:20
- 1. 用户控制器reset_password操作
- 2. 如何限制用户访问控制器的特定操作?
- 3. 控制器操作未重定向用户从AJAX调用
- 4. 如何从控制器操作中调用另一个控制器操作?
- 5. 如何在Json控制器操作中验证用户?
- 6. 在Grails中保护用户的控制器操作
- 7. ASP.NET MVC基于控制器操作权限的用户
- 8. 如何根据用户角色限制asp.net控件操作?
- 9. Laravel禁用控制器操作布局
- 10. 从TagHelper调用控制器操作
- 11. 控制操作员被误用
- 12. 使用MSMQ控制SQL写入操作
- 13. 如何通过控制器操作在JQuery AJAX调用Oxid eSHOP
- 14. jQuery检测用户操作页
- 15. 从另一个控制器操作中调用AsyncController操作?
- 16. 限制用户操作的月份
- 17. 使用jQuery调用控制器动作
- 18. 用户控制
- 19. 用户控制
- 20. 用户控制
- 21. JQuery的在C#ASP.Net用户控制
- 22. ASP.NET MVC2用户控制JQuery的问题
- 23. FileSystem.CopyFile用户操作
- 24. Ajax调用C#控制器操作不起作用
- 25. jquery用户控件
- 26. 跨线程操作控制
- 27. 重载控制器操作
- 28. Zend - 控制器/操作ACL
- 29. 操作控制寄存器
- 30. 制作用户控件加Jquery的DLL嵌入
为什么你想在客户端做到这一点?您的服务器端语言应该已经配备了使会话无效的机制。 – Boldewyn 2010-05-25 12:18:15
设置会话创建时的cookie超时? – baloo 2010-05-25 12:22:24