考试系统—— 刷新页面 考试剩余时间不重新开始
生活随笔
收集整理的這篇文章主要介紹了
考试系统—— 刷新页面 考试剩余时间不重新开始
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
查了些資料整理如下:
JavaScript倒計時,實現(xiàn)起來不難,但是一刷新往往就重新計算了,如果要實現(xiàn)刷新不重計該如何做呢?
有這么幾種思路,
? ? ?方法1:cookie
《JS寫的在線考試倒計時,Cookie防止刷新》 鏈接地址:https://my.oschina.net/u/2358721/blog/464652
代碼:
$(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毫秒執(zhí)行一次setTimeout(function() {settime(remainTime);}, 1000);};//時添加cookiefunction addCookie(name, value, expiresHours) {var cookieString = name + "=" + escape(value); //escape() 函數(shù)可對字符串進行編碼,這樣就可以在所有的計算機上讀取該字符串。//判斷是否設(shè)置過期時間,0代表關(guān)閉瀏覽器時失效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;}//根據(jù)名字獲取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;};};} View Code- 用settimeout每隔一秒觸發(fā)一次
- 用cookies在cookies中讀取剩余時間
- 代碼:
.net后臺部分:
在后臺代碼中設(shè)置cookies值
Response.Cookies["m"].Value = strs[0]; Response.Cookies["s"].Value = strs[1];?
? ? ?方法2:本地緩存
也可以和服務(wù)器時間同步,把計時器讀取放在服務(wù)器端,考慮到是在線考試,實際用的較少
???? 方法3:window.name (此方法已驗證)
原文鏈接:http://www.jb51.net/article/90204.htm
<span style="font-family:KaiTi_GB2312;font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type"content="text/html; charset=gb2312" /> <title>前端開發(fā)http:write.blog.csdn.net/postlist</title> </head><body> <form> <SCRIPT LANGUAGE="JavaScript"><!--var maxtime;if(window.name==''){maxtime = 1*60;}else{maxtime = window.name;}function CountDown(){if(maxtime>=0){minutes = Math.floor(maxtime/60); seconds = Math.floor(maxtime%60);msg = "距離考試結(jié)束還有"+minutes+"分"+seconds+"秒";document.all["timer"].innerHTML = msg;if(maxtime == 5*60) alert('注意,還有5分鐘!');--maxtime;window.name = maxtime;}else{clearInterval(timer);alert("考試時間到,結(jié)束!");//添加額外代碼//document.getElementById("imgBtnSubmit").click(); //規(guī)定時間結(jié)束后自動提交按鈕 提交試卷
}}timer = setInterval("CountDown()",1000); //--> </SCRIPT> <div id="timer"style="color:red"></div> </form> </body></html></span>
?
轉(zhuǎn)載于:https://www.cnblogs.com/wuling129/p/6904529.html
總結(jié)
以上是生活随笔為你收集整理的考试系统—— 刷新页面 考试剩余时间不重新开始的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 编码风格参考
- 下一篇: 世界级版本控制工具Vault v10.0