下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
理想Web倒计时器的设计与实现
摘要Web页面的倒计时程序一般采用JavaScript实现。基于文中分析的多种原因,纯粹使用JavaScript无法做到倒计时器的防刷新、防关闭、自校正功能,到目前为止,还未通过搜索引擎检索到具有以上功能的倒计时器例子。针对这种情况,本文给出了一种结合动态脚本与JavaScript技术的防刷新、防关闭、自校正的Web倒计时程序,在实际项目开发中具有实用价值。
关键词倒计时器;JavaScript;防刷新;防关闭1引言
使用倒计时,可以让用户清楚地了解离特定事件还剩余多少时间,因此在抢答系统、在线考试系统、节日倒计时等应用中都使用到倒计时。在Web应用中,一般使用JavaScript来设计倒计时程序。JavaScript中的setInterval()函数可以作为定时器,每隔一段时间执行指定的事件,但是这种定时器由于运行环境的限制,一旦用户刷新页面或关闭页面再打开,倒计时器又会重新计时,另外,由于JavaScript运行速度较慢,自身运行要占用一定时间,这种倒计时器也很难做到精确计时。普通倒计时器的缺陷主要表现在以下几个方面:
①页面刷新后重新开始倒计时。
②面关闭再打开后重新开始倒计时。
③无法做到全部客户端同步。
④计时不精确,无法对自身进行校正。
⑤一旦客户端修改了计算机时钟,倒计时将会失败。
普通倒计时器之所以存在以上问题,究其原因,在于下面几个方面:
⑴定时器设计技术。Web页面中的定时器使用JavaScript进行设计,由于HTTP连接不是一种持续连接,完成用户请求后,连接立即关闭,JavaScript的这种运行环境就决定了它不能记录用户的状态,每当页面刷新或页面关闭再打开后,相应JavaScript的变量会重新进行初始化,表现为倒计时重新计时。
⑵JavaScript的运行速度。JavaScript以解释方法执行,运行速度较编译型语言慢。倒计时器设计时一般会使用到setInterval(function,interval)函数作为定时器,其中,interval为定时器间隔,单位为毫秒,function为定时器每隔interval指定的时间间隔触发的动作。如果function中含有复杂运算,并且由于JavaScript的执行速度较慢,定时器就会被拖慢,例如定义的间隔为1000ms,实际运行的间隔可能为1100ms,这样整个倒计时器的精度就会受到影响。
⑶Web页面的随机请求方式。由于用户的请求是随机的,不可能要求所有用户在同一时间打开页面进行倒计时,所以无法做到所有客户端的倒计时同步。2防刷新防关闭自校正的倒计时器设计思路
单纯使用客户端页面中的JavaScript无法设计出理想的Web倒计时程序,必须把动态脚本技术与客户端的JavaScript结合起来才可以实现符合要求的倒计时器。
由于客户端显示的时间各不相同,所以不能作为倒计时器的时间参考,否则无法实现所有客户端的倒计时同步,但在B/S系统中,服务器的时间对于每一个客户端来说都是一致的,我们可以把服务器的时间作为倒计时参考时间,实现所有客户端的同步倒计时。
在动态脚本语言(ASP、PHP、JSP)中可以很方便地取得服务器的当前时间。对于倒计时程序来说,都要指定一个结束时间,可以通过计算出一个服务器当前时间和结束时间之间的时间间隔,这个时间间隔反映了当前服务器时间离倒计时结束时间还有多长时间,无论用户怎样刷新、关闭再打开页面,计算出的这个时间间隔都是与客户端一致的,这样就避免了刷新、关闭再打开后倒计时器重新计时的问题。
由于JavaScript是一种解释型语言,执行速度较编译型语言慢,每次执行setInterval()函数时每次都会产生一个很小的误差,虽然这个误差很小,但是这些小误差积累起来后却不容忽视,会严重影响倒计时器的精度,进而影响到客户端的同步。虽然各个客户端上的时钟各不相同,但是,我们可以认为所有客户端计算机的时钟步进是一致的,即A计算机时钟产生的1秒时间间隔与B计算机时间产生时间间隔是相同的,所以,我们可以把客户端计算机时钟作为观察倒计时器快慢的参照物,做出setInterval()函数的实际执行时间间隔与本地客户机时钟流逝时间间隔的差值,以这个差值作为反馈,修改setInterval()函数的执行间隔,从而达到自校正的目的,实现倒计时器的精确计时。
另外,在使用上述自校正方法时,我们要考虑到在定时器执行时,客户修改了本地时钟的情况。一般情况下,我们得到的反馈差值不会太大,这里把1000ms作为阈值,一旦得到的差值大于1000ms,程序会认为客户修改了本地计算机时钟,停止自校正。仍使用原来的间隔时间,这样便解决了这个问题。3代码实现
根据以上的设计思路,使用JSP作为动态脚本语言,实现了一个防刷新、防关闭、自校正、客户端调节时钟不敏感的倒计时器。该倒计时器由两个文件组成,djs.js中为JavaScript倒计时器的主体,实现倒计时功能;djs.jsp中获取服务器时间,调用djs.js中的start()方法开始倒计时,并显示出倒计时结果。/*****djs.jsp*****/<%@pageimport="java.text.SimpleDateFo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 退休返聘人员合同范例
- 私立华联学院《参数化设计》2023-2024学年第一学期期末试卷
- 定制钢板购买合同范例
- 码头停靠收费合同范例
- 工程制作合同范例
- 烟草制品购销合同范例
- 副食购买合同范例
- 机械车位维保合同范例
- 种薯购销合同范例
- 课程顾问招聘合同范例
- (完整word版)首件检验管理制度
- 线路工程灌注桩施工作业指导书施工方案
- 重力坝的分缝与止水
- 三重管高压旋喷桩施工工艺规程与施工方案
- 个体诊所药品清单
- PFMEA的严重度SOD的评分和优先级别
- 国网基建国家电网公司输变电工程结算管理办法
- 100道递等式计算(能巧算得要巧算)
- 中国地图含省份信息可编辑矢量图
- 路政运政交通运输执法人员考试题库
- 企业技术标准化管理
评论
0/150
提交评论