javascript 监听器和定时器
程序员文章站
2024-03-20 10:12:22
...
这个例子是我要垮系统访问,防止当前会话失效,而还能访问另一个系统,而做得测试。
我将本Session过期的时间取到了页面。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>合同起草</title>
</head>
<x:tbody title="xx" iconCls="icon-dot">
<div id="msgBox" style="display:none;"><font style="size: 14px;color: red"></font></div>
<iframe id="logfrm" src="另一个系统地址" frameborder="0" scrolling="no">
</iframe>
<script type="text/javascript">
// 提示时间
var infoTime = 180;// 3分钟,到时默认提醒
var unit = 1000;
// session 过期时间,单位秒,从后台获取的
var sessionTime = "${sessionLostTime}"*unit; ;
// 和session 同步,初始化定时任务
var timeout = runTimeout();
// 时间到了进行提示,从180秒时间减少
var outinfo = runInteval();
var noticeout;
// 点击默认刷新session 时间
myWindowListener("click",function(){
// 隐藏提示信息
$('#msgBox').hide();
clearTimeout(timeout);
clearTimeout(outinfo);
clearInterval(noticeout);
outinfo = runInteval();
timeout = runTimeout();
});
// 执行定时器,session 过去动作
function runTimeout(){
return window.setTimeout(active,sessionTime);
}
// 执行定时器,消息提醒
function runInteval(){
return window.setTimeout(noticeout=notice,(sessionTime-infoTime*unit));
}
// 时间到了 直接跳转登陆 界面
function active(){
forward('','/c/jsp/login/login');
}
// 时间即将到期 提示时间
function notice(){
$('#msgBox').show();
return window.setInterval(infoAction,1000);
}
// 提示操作
function infoAction(){
infoTime --;
$('#msgBox font').html("");
$('#msgBox font').html("您长时间未操作,页面将在"+ infoTime +"秒后失效,恢复请点击空白处!");
}
// IE/fire
function myWindowListener(fanc,time){
if(window.attachEvent){
return window.document.attachEvent("on"+fanc,time);
}else{
return window.addEventListener(fanc,time,false);
}
}
</script>
</x:tbody>
</html>
有 更好的建议,请多帮助!
独立出来方便调用好一些。
// 执行定时器,session 过去动作
function runTimeout(sessionTime){
return window.setTimeout(active,sessionTime);
}
// 执行定时器,消息提醒
function runInteval(sessionTime,infoTime,unit){
var lessTime = sessionTime-infoTime*unit;
return window.setTimeout(noticeout=notice,lessTime);
}
// 时间到了 直接跳转登陆 界面
function active(){
forward('','/c/jsp/login/login');
}
// 时间即将到期 提示时间
function notice(){
$('#msgBox').show();
return window.setInterval(infoAction,1000);
}
// 提示操作
function infoAction(){
infoTime --;
$('#msgBox font').html("");
$('#msgBox font').html("您长时间未操作,页面将在"+ infoTime +"秒后失效,恢复请点击空白处!");
}
// IE/fire
function myWindowListener(myevent,fanc,sessionTime){
if(window.attachEvent){
return window.document.attachEvent("on"+myevent,fanc);
}else{
return window.addEventListener(myevent,fanc,false);
}
}
// 提示时间
var infoTime = 180;// 3分钟
// 点击默认刷新session 时间
function initSessionListener(sessionLostTime){
var msgBox =null;
var unit = 1000;
// session 过期时间,单位秒
var sessionTime = sessionLostTime*unit;
// 和session 同步
var timeout = runTimeout(sessionTime);
// 时间到了进行提示
var outinfo = runInteval(sessionTime,infoTime,unit);
var noticeout;
// 隐藏提示信息
myWindowListener("click",function(){
// 隐藏提示信息
$('#msgBox').hide();
clearTimeout(timeout);
clearTimeout(outinfo);
clearInterval(noticeout);
outinfo = runInteval(sessionTime,infoTime,unit);
timeout = runTimeout(sessionTime);
});
}
上一篇: Web监听器_监听绑定、活钝化HttpSession
下一篇: 冒泡排序和二分查找算法
推荐阅读
-
javascript 监听器和定时器
-
javascript 对象的单继承属性和多继承属性写法
-
使用JavaScript将10进制数字转为2进制数字和任意进制数字
-
JavaScript学习之事件原理和实践
-
javascript操作select和option 博客分类: js JavaScriptIEFirefoxHTML
-
js时间戳和时间格式之间的转换 博客分类: JavaScriptweb前端技术 javascript时间戳时间格式转换
-
JavaScript数据结构和算法----栈
-
数据结构-JavaScript实现顺序队列和双向队列
-
js深拷贝和浅拷贝 博客分类: JavaScript javaScript深拷贝浅拷贝
-
JavaScript面向对象、闭包和函数式编程