基于jQuery+Cookie实现的防止刷新的在线考试倒计时


Posted in Javascript onJune 19, 2015

基于jQuery+Cookie实现的防止刷新的在线考试倒计时

$(function() {
      var _minute = parseInt("${exampaper.paperTime }");
      var _expiresHours = _minute * 60 * 1000;
        
      if(!hasSetCookie()){
        addCookie("${examinee.examineeId}", _expiresHours, _expiresHours);
      } 
      settime($("#remainTime")); 
    });
    function hasSetCookie(){
      var strCookie = document.cookie;
      var arrCookie = strCookie.split("; ");
      for (var i = 0; i < arrCookie.length; i++) {
        var arr = arrCookie[i].split("=");
        if (arr[0] == "${examinee.examineeId}") {
          return true;
        }
      };
      return false;
    }
    //开始倒计时
    function settime(remainTime) {
      var _time = getCookieValue("871d31bacfd4451484c5f70f8860c2a9");
      var _countdown = parseInt(getCookieValue("${examinee.examineeId}")) / 1000;
       
      if (_countdown <= 0) {
        alert("考试时间到!");
        endExam();
      } else {
        var _second = _countdown % 60;
        var _minute = parseInt(_countdown / 60) % 60;
        var _hour = parseInt(parseInt(_countdown / 60) / 60);
 
        if (_hour < 10)
          _hour = "0" + _hour.toString();
        if (_second < 10)
          _second = "0" + _second.toString();
        if (_minute < 10)
          _minute = "0" + _minute.toString();
 
        remainTime.html(_hour + ":" + _minute + ":" + _second);
        _countdown--;
        editCookie("${examinee.examineeId}", _countdown * 1000, _countdown * 1000);
      }
      //每1000毫秒执行一次
      setTimeout(function() {
        settime(remainTime);
      }, 1000);
    };
 
    //时添加cookie
    function addCookie(name, value, expiresHours) {
      var cookieString = name + "=" + escape(value); //escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
      //判断是否设置过期时间,0代表关闭浏览器时失效
      if (expiresHours > 0) {
        var date = new Date();
        date.setTime(date.getTime() + expiresHours * 1000);
        cookieString = cookieString + ";expires=" + date.toUTCString();
      }
      document.cookie = cookieString;
    }
 
    //修改cookie的值
    function editCookie(name, value, expiresHours) {
      var cookieString = name + "=" + escape(value);
      if (expiresHours > 0) {
        var date = new Date();
        date.setTime(date.getTime() + expiresHours * 1000); //单位是毫秒
        cookieString = cookieString + ";expires=" + date.toGMTString();
      }
      document.cookie = cookieString;
    }
 
    //根据名字获取cookie的值
    function getCookieValue(name) {
      var strCookie = document.cookie;
      var arrCookie = strCookie.split("; ");
      for (var i = 0; i < arrCookie.length; i++) {
        var arr = arrCookie[i].split("=");
        if (arr[0] == name) {
          return unescape(arr[1]);
          break;
        } else {
          continue;
        };
      };
    }

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
js去除空格的12种实用方法
Nov 08 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
Aug 26 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
js验证框架实现代码分享
May 18 Javascript
jQuery动态加载css文件实现方法
Jun 15 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
Sep 05 Javascript
详解Angular路由 ng-route和ui-router的区别
May 22 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
Feb 11 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
javascript 对象 与 prototype 原型用法实例分析
Nov 11 Javascript
VSCode搭建React Native环境
May 07 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 #Javascript
JavaScript中数据结构与算法(五):经典KMP算法
Jun 19 #Javascript
使用AngularJS编写较为优美的JavaScript代码指南
Jun 19 #Javascript
javascript格式化日期时间方法汇总
Jun 19 #Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 #Javascript
JavaScript中数据结构与算法(三):链表
Jun 19 #Javascript
js结合正则实现国内手机号段校验
Jun 19 #Javascript
You might like
Windows下安装Memcached的步骤说明
2010/04/25 PHP
php 代码优化之经典示例
2011/03/24 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
详解Python的Django框架中的通用视图
2015/05/04 Python
Python实现堆排序的方法详解
2016/05/03 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
应届生求职推荐信
2013/10/28 职场文书
个人实用的自我评价范文
2013/11/23 职场文书
党员公开承诺事项
2014/03/25 职场文书
环保标语大全
2014/06/12 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
2014年学生工作总结
2014/11/20 职场文书
高考百日冲刺决心书
2015/09/23 职场文书