注:原创作品,转载请注明出处
解决方案:
1,在页面元素加载之前,定义js计时器,并赋值为0;
2,在页面元素加载之前,绑定body的鼠标单击事件处理函数--每次鼠标单击body都重新赋值计时
器为0;
3,在html中body中定义一个隐藏域,值为服务器上session的最大时间。
4,在页面元素加载完毕后,启动session超时监听器:该监听器实现的功能是:
获取页面上隐藏域的session的最大超时时间,
比较计数器和session最大值,如果计时器的数值小于session的最大时间则,计数器+1,重新
调用session监听器, 如果计数器的数值大于等于session的的最大时间,则调用dwr或ajax
让后台的session失效
实例:
解决方案:
1,在页面元素加载之前,定义js计时器,并赋值为0;
2,在页面元素加载之前,绑定body的鼠标单击事件处理函数--每次鼠标单击body都重新赋值计时
器为0;
3,在html中body中定义一个隐藏域,值为服务器上session的最大时间。
4,在页面元素加载完毕后,启动session超时监听器:该监听器实现的功能是:
获取页面上隐藏域的session的最大超时时间,
比较计数器和session最大值,如果计时器的数值小于session的最大时间则,计数器+1,重新
调用session监听器, 如果计数器的数值大于等于session的的最大时间,则调用dwr或ajax
让后台的session失效
实例:
<html>
<head>
<script type="text/javascript">
//定义计时器
var monitorCount = 0;
//绑定body的onclick处理函数
document.body.onclick = function()
{
if(typeof bodyOnClickFunction == 'function')
{
bodyOnClickFunction();
}
}
//body的单击处理函数
function bodyOnClickFunction()
{
resetTimeoutCount();
}
//重置计数器为0
function resetTimeoutCount()
{
monitorCount = 0
}
var timeOutFunction = "sessionTimeOutMonitor()";
function sessionTimeOutMonitor()
{
var sessionTimeCount = document.getElementById("sessionTimeCount").value / 60;
if(monitorCount < sessionTimeCount)
{
monitorCount++;
setTimeOut(sessionTimeOutMonitor,60 * 1000);
}
else
{
//调用ajax或者dwr调用使后台的session失效
}
}
</script>
</head>
<body onload="sessionTimeOutMonitor();">
<input type="hidden" value="从服务器上获取session的最大超时数值" id="sessionTimeCount"/>
</body>
</html>