jQuery:不活动刷新/注销

时间:2016-07-15 13:22:05

标签: javascript jquery

我使用下面的jQuery来刷新我的数据表。我知道有更好的方法可以做到这一点,但目前,这对我有用:

 var idleTime = 0;
 var idleInterval = setInterval(funcion(){
   idleTime = idleTime + 1;
   if (idleTime > 1)
   {
     $('#example1').DataTable().state.clear();
     window.location.reload();
   }
 }, 60000);

 $(this).mousemove(function(e){
   idleTime = 0;
 });
 $(this).keypress(function(e){
   idleTime = 0;
 });

使用上面的代码,大约1分钟后,页面将清除数据表并重新加载页面。

我是否可以在代码中添加一些内容,以查看由于不活动而刷新了多少次?然后在120次刷新后,将用户注销。

我不确定是否可以通过页面保持刷新来完成。

3 个答案:

答案 0 :(得分:1)

您需要一种方法来跟踪重新加载之间的重新加载次数。由于您重新加载整个页面,我可以快速想到两种方式:

1)如果有活动,请使用cookie来保存号码并正确重置cookie

2)使用参数将值发送到服务器,让服务器将其重新插入到您的javascript中

如果你想在javascript中处理这个问题。

通常,您在服务器端会话中处理注销。然后,您必须确保服务器不将您的自动重新加载识别为“活动”。

希望这会有所帮助......

答案 1 :(得分:0)

我很乐意为您提供一个简单的解决方案,但只要您使用jquery已经更好地使用ajax来享受它。

 var idleTime = 0;
 var idleInterval = setInterval(funcion(){
   idleTime = idleTime + 1;
   if (idleTime > 1)
   {
     var url      = window.location.href + 'page_table.php'; 
     //you should specify a page_table.php that return only the table.

      $.get(url, function( data ) {
          $('#example1').html(data);    //<----- refresh only the zone with the id : #example
          $('#example1').DataTable();   // <---- important : set the element as DataTable.
      });
   }
 }, 60000);

 $(this).mousemove(function(e){
   idleTime = 0;
 });
 $(this).keypress(function(e){
   idleTime = 0;
 });

这个想法只是刷新表格的一部分。

答案 2 :(得分:0)

如果它适合您,请保留当前的代码,并且不要依赖于localStorage,或者根据浏览器可能会或可能不会运行的其他技巧。让我们将信息存储在网址中。

像这样:

var idleTime = 0,
    refreshCount = window.location.hash ?
            Number(window.location.hash.replace("#", '')) : 0; //get current counter
var idleInterval = setInterval(function(){
     //...all your existent code

     /*let's rewrite the url with our new counter, so now when the 
       page is reloaded and th script is executed it gets the new value */
     if(refreshCount == 60) {
        //do your magic it has been refreshed 60 times
     } else {
        window.location = window.location.href.replace('#' + refreshCount, '') 
                        + '#' + (refreshCount+1);
        window.location.reload();
     }
}, 1000);

希望这有帮助。

干杯。