怎么做网页监听,如果一段时间不操作网页,就自动关闭知道的说一下啊....

解决方案 »

  1.   

    做一个计时变量time,在你的每一个javascript里都包括:
    1.time清零
    2.window.setInterval({计时},时间)这样超过一定时间,用户没有触发新的javascript,那么业面就关闭了
      

  2.   

    用JAVASCRIPT做时间的控制吧  和这段时间里对页面点击的判断
      

  3.   

    “不操作网页”这个逻辑难以判断,有歧义。
    什么样子才叫不操作网页?
    我在input中写内容,这叫不叫操作网页,还是说不执行指定JS函数蔡脚步操作?
    把这个问题搞清楚了,就可以用javascript定时器来实现。
      

  4.   

    你在load里加个定时函数,然后每个动作都调用这个定时函数,这样就能实现了吧
      

  5.   

    我有做在线考试的模块,考试时间一到,强行关闭页面。调用服务器端时间。这个肯定有用吧。
    <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>