怎么做网页监听,如果一段时间不操作网页,就自动关闭

dj6ds 2007-07-01 02:18:56
怎么做网页监听,如果一段时间不操作网页,就自动关闭

知道的说一下啊....
...全文
793 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuqiu10hao 2007-07-14
  • 打赏
  • 举报
回复
用javascript去写
三井学长 2007-07-02
  • 打赏
  • 举报
回复
我有做在线考试的模块,考试时间一到,强行关闭页面。调用服务器端时间。这个肯定有用吧。
<script language="JavaScript">
<!--
/*用相对不规则的字符串来创建日期对象,不规则的含义为:顺序包含年月日三个数值串,有间隔*/
String.prototype.parseDate = function(){
var regThree = /^\D*(\d{2,4})\D+(\d{1,2})\D+(\d{1,2})\D*$/;
var regSix = /^\D*(\d{2,4})\D+(\d{1,2})\D+(\d{1,2})\D+(\d{1,2})\D+(\d{1,2})\D+(\d{1,2})\D*$/;
var date = null;
if(regThree.test(this))
date = new Date(this.replace(/\s/g,"").replace(regThree,"$1/$2/$3"));
else if(regSix.test(this)){
str = this.match(regSix);
date = new Date(str[1],str[2]-1,str[3],str[4],str[5],str[6]);
}else return new Date();
return date;
}

/*
* 功能:根据输入表达式返回日期字符串
* 参数:dateFmt:字符串,由以下结构组成
* yy:长写年,YY:短写年mm:数字月,MM:英文月,dd:日,hh:时,
* mi:分,ss秒,ms:毫秒,we:汉字星期,WE:英文星期.
* isFmtWithZero : 是否用0进行格式化,true or false
*/
Date.prototype.parseString = function(dateFmt,isFmtWithZero){
dateFmt = (dateFmt == null?"yy-mm-dd" : dateFmt);
isFmtWithZero = (isFmtWithZero == null?true : isFmtWithZero);
if(typeof(dateFmt) != "string" )
throw (new Error(-1, 'parseString()方法需要字符串类型参数!'));
var weekArr=[["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],
["SUN","MON","TUR","WED","THU","FRI","SAT"]];
var monthArr=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];
var str=dateFmt;
var o = {
"yy" : this.getFullYear(),
"YY" : this.getYear(),
"mm" : this.getMonth()+1,
"MM" : monthArr[this.getMonth()],
"dd" : this.getDate(),
"hh" : this.getHours(),
"mi" : this.getMinutes(),
"ss" : this.getSeconds(),
"we" : weekArr[0][this.getDay()],
"WE" : weekArr[1][this.getDay()]
}
for(var i in o){
str = str.replace(new RegExp(i,"g"),o[i].toString().fmtWithZero(isFmtWithZero));
}
str = str.replace(/ms/g,this.getMilliseconds().toString().fmtWithZeroD(isFmtWithZero));
return str;
}
/*将一位数字格式化成两位,如: 9 to 09*/
String.prototype.fmtWithZero = function(isFmtWithZero){
return (isFmtWithZero && /^\d$/.test(this))?"0"+this:this;
}
String.prototype.fmtWithZeroD = function(isFmtWithZero){
return (isFmtWithZero && /^\d{2}$/.test(this))?"00"+this:((isFmtWithZero && /^\d$/.test(this))?"0"+this:this);
}

/* 功能 : 返回与某日期相距N天(N个24小时)的日期
* 参数 : num number类型 可以为正负整数或者浮点数,默认为1;
* type 0(秒) or 1(天),默认为天
* 返回 : 新的PowerDate类型
*/
Date.prototype.dateAfter=function(num,type){
num = (num == null?1:num);
if(typeof(num)!="number") throw new Error(-1,"dateAfterDays(num,type)的num参数为数值类型.");
type = (type==null?1:type);
var arr = [1000,86400000];
return new Date(this.valueOf() + num*arr[type]);
}

//判断是否是闰年,返回true 或者 false
Date.prototype.isLeapYear = function (){
var year = this.getFullYear();
return (0==year%4 && ((year % 100 != 0)||(year % 400 == 0)));
}

//返回该月天数
Date.prototype.getDaysOfMonth = function (){
return (new Date(this.getFullYear(),this.getMonth()+1,0)).getDate();
}

//日期比较函数,参数date:为Date类型,如this日期晚于参数:1,相等:0 早于: -1
Date.prototype.dateCompare = function(date){
if(typeof(date) != "object" || !(/Date/.test(date.constructor)))
throw new Error(-1,"dateCompare(date)的date参数为Date类型.");
var d = this.getTime() - date.getTime();
return d>0?1:(d==0?0:-1);
}

/*功能:返回两日期之差
*参数:pd PowerDate对象
* type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒
* intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型
* output : 输出提示,如:时间差为#周!
*/
Date.prototype.calDateDistance = function (date,type,intOrFloat,output){
if(typeof(date) != "object" || !(/Date/.test(date.constructor)))
throw new Error(-1,"calDateDistance(date,type,intOrFloat)的date参数为Date类型.");
type = (type==null?'dd':type);
if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,")))
throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法.");
var iof = (intOrFloat==null?0:intOrFloat);
var num=0;
var o = {
"ww" : 7*86400000,
"dd" : 86400000,
"hh" : 3600000,
"mi" : 60000,
"ss" : 1000,
"ms" : 1
}
switch(type){
case "yy": num = this.getFullYear() - date.getFullYear(); break;
case "mm": num = (this.getFullYear() - date.getFullYear())*12+this.getMonth()-date.getMonth(); break;
default:
var sub = this.valueOf() - date.valueOf();
if (o[type])
num = (sub/o[type]).fmtRtnVal(iof);
break;
}
return (output ? output.replace(/#/g," "+num+" ") : num);
}
//返回整数或者两位小数的浮点数
Number.prototype.fmtRtnVal = function (intOrFloat){
return (intOrFloat == 0 ? Math.floor(this) : parseInt(this*100)/100);
}
//根据当前日期所在年和周数返回周日的日期
Date.prototype.RtnByWeekNum = function (weekNum){
if(typeof(weekNum) != "number")
throw new Error(-1,"RtnByWeekNum(weekNum)的参数是数字类型.");
var date = new Date(this.getFullYear(),0,1);
var week = date.getDay();
week = (week==0?7:week);
return date.dateAfter(weekNum*7-week,1);
}
//根据日期返回该日期所在年的周数
Date.prototype.getWeekNum = function (){
var dat = new Date(this.getFullYear(),0,1);
var week = dat.getDay();
week = (week==0?7:week);
var days = this.calDateDistance(dat,"dd")+1;
return ((days + 6 - this.getDay() - 7 + week)/7);
}

//-->
</script>

<script language="JavaScript">
function myTime(){
var dateNow = new Date().toLocaleString().parseDate();
var dateEnd = "<%=endtime%>".parseDate();

var n = dateEnd.calDateDistance(dateNow,"ss",null,"#") * 1;

var hours = Math.floor(n/3600);
var minutes = Math.floor(n%3600/60);
var seconds = n%3600%60;
if (hours==0 && minutes==0 && seconds==0){
if (confirm("您已经超时,确定提交!")){
return true;
}
else{
window.location.href="../Desktop/Index.asp"
}
}
if ( seconds<10 ){
seconds = "0" + seconds;
}
var timer = "剩余时间 "+hours+"小时: "+minutes+"分:"+" "+seconds+"秒"
document.getElementById("clock").innerHTML=timer;
setTimeout("myTime()",1000);
}
window.onload=myTime
</script>
angelseyes 2007-07-02
  • 打赏
  • 举报
回复
可以判断session是否timeout
wxno1 2007-07-02
  • 打赏
  • 举报
回复
你在load里加个定时函数,然后每个动作都调用这个定时函数,这样就能实现了吧
xiemingmei 2007-07-01
  • 打赏
  • 举报
回复
“不操作网页”这个逻辑难以判断,有歧义。
什么样子才叫不操作网页?
我在input中写内容,这叫不叫操作网页,还是说不执行指定JS函数蔡脚步操作?
把这个问题搞清楚了,就可以用javascript定时器来实现。
aya01 2007-07-01
  • 打赏
  • 举报
回复
用JAVASCRIPT做时间的控制吧 和这段时间里对页面点击的判断
darkwh 2007-07-01
  • 打赏
  • 举报
回复
不用这么麻烦吧,去找一个过时关闭页面的代码加在你的每个网页里,包含文件也可以,然后每次操作都刷新一次页面就行了(在本页打开),这样如果没人点击,过了一定时间就能自动关闭了。
casazaft 2007-07-01
  • 打赏
  • 举报
回复
做一个计时变量time,在你的每一个javascript里都包括:
1.time清零
2.window.setInterval({计时},时间)

这样超过一定时间,用户没有触发新的javascript,那么业面就关闭了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧