我使用下面的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次刷新后,将用户注销。
我不确定是否可以通过页面保持刷新来完成。
答案 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);
希望这有帮助。
干杯。