1

我搜索并找到了一些使用 jquery 设置空闲超时的示例。

1 - Eric Hynds 演示的空闲超时

2 -空闲计时器 由 paulirish

3 -用户空闲时触发事件/ DEMO HERE

4 -检测用户在网页上处于活动状态还是空闲状态

5 -使用 PHP 和 jQuery 进行彗星长轮询

6 -检测空闲超时 javascript

...以及其他几个类似的例子

在这些示例之间,数字 1 更适合我需要,因为我需要在 X 分钟后使用任何确认警报(logout.php 或任何 url)自动注销用户。但是这种方法不适合服务器。问题是:此 jquery 代码将 ping 发送到任何 url:keepAlive.php 在循环/池中请求 OK 文本。看萤火虫屏幕:

在此处输入图像描述

如何解决这个问题?因此,其他示例仅打印 Idle/No Idle 而不能使用警报确认和自动注销(logout.php 或任何 url)现在真的更好的方法来选择使用 jquery/Php 的空闲超时?

谢谢

4

4 回答 4

5

我在 head 部分使用元刷新元素在 X 秒后将用户自动引导到注销页面。以下将在用户停留在同一页面 20 分钟后自动将用户发送到注销页面:

<meta http-equiv="refresh" content = "1200; url=http://www.site.com/user/logout">

这很有效,(大部分)支持跨浏览器,不依赖于启用的 JavaScript,并且很容易实现。

如果您的网站的用户长时间停留在同一页面上(例如,通过 JS 进行交互),则此解决方案将不适合您。它也不允许在重定向发生之前运行任何 JS 代码。

于 2012-04-26T19:45:59.513 回答
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>
于 2017-07-29T19:15:39.533 回答
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 
        }
于 2020-11-20T02:36:46.647 回答
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>
于 2019-05-11T05:26:41.900 回答