我搜索并找到一些使用jquery设置空闲超时的示例。
1 - Idle Timeout By Eric Hynds DEMO
3 - Fire Event When User is Idle / DEMO HERE
4 - detect user is active or idle on web page
5 - Comet Long Polling with PHP and jQuery
6 - detacting idle timeout javascript
......以及其他一些类似的例子
在这些示例之间,数字1对于我需要更好,因为我需要在X分钟(logout.php或任何url)之后使用任何确认警报自动注销用户。但这种方法不适合服务器。问题是:这个jquery代码发送ping到任何url:keepAlive.php in loop / pooling for request OK text。见firebug屏幕:
如何解决这个问题? 那么,其他示例只打印Idle / No Idle而不使用alert confirm和auto logout(logout.php或任何url)现在真的更好的方法是使用jquery / Php选择空闲超时?
由于
答案 0 :(得分:3)
我在head部分使用元刷新元素,在X秒后自动将用户定向到注销页面。下面将在停留在同一页面20分钟后自动将用户发送到注销页面:
<meta http-equiv="refresh" content = "1200; url=http://www.site.com/user/logout">
这是有效的,(大多数情况下)支持跨浏览器,不依赖于启用JavaScript并且很容易实现。
如果您的网站的用户长时间停留在同一页面上(例如,通过JS进行交互),此解决方案将无法为您效果。它还不允许在重定向发生之前运行任何JS代码。
答案 1 :(得分:1)
以下是我应用于使用JavaScript和jQuery构建简单自动注销功能的方法。此脚本构建用于网页,当在25分钟内未检测到鼠标移动时,网页将自动转到注销页面。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
var idleMax = 25; // Logout after 25 minutes of IDLE
var idleTime = 0;
var idleInterval = setInterval("timerIncrement()", 60000); // 1 minute interval
$( "body" ).mousemove(function( event ) {
idleTime = 0; // reset to zero
});
// count minutes
function timerIncrement() {
idleTime = idleTime + 1;
if (idleTime > idleMax) {
window.location="LogOut.php";
}
}
</script>
答案 2 :(得分:0)
<script>
var idleMax = 5; (5 min)
var idleTime = 0;
(function ($) {
$(document).ready(function () {
$('*').bind('mousemove keydown scroll', function () {
idleTime = 0;
var idleInterval = setInterval("timerIncrement()", 60000);
});
$("body").trigger("mousemove");
});
}) (jQuery)
function timerIncrement() {
idleTime = idleTime + 1;
if (idleTime > idleMax) {
window.location="Your LOGOUT or Riderct page url here";
}
}
</script>
答案 3 :(得分:0)
轻松而有趣
var autoLogoutTimer;
resetTimer();
$(document).on('mouseover mousedown touchstart click keydown mousewheel DDMouseScroll wheel scroll',document,function(e){
// console.log(e.type); // Uncomment this line to check which event is occured
resetTimer();
});
// resetTimer is used to reset logout (redirect to logout) time
function resetTimer(){
clearTimeout(autoLogoutTimer)
autoLogoutTimer = setTimeout(idleLogout,5000) // 1000 = 1 second
}
// idleLogout is used to Actual navigate to logout
function idleLogout(){
window.location.href = ''; // Here goes to your logout url
}