如何设置定时器功能

时间:2009-12-09 05:18:28

标签: php javascript

我正在进行在线考试管理,我已将考试的时间设置为5分钟。

当学生参加此测试时,计时器开始减少。

我使用javascript制作了这个计时器。

如果学生从第一次开始刷新页面计时器,问题是什么。如果页面刷新,我怎样才能让时间变得静止。

6 个答案:

答案 0 :(得分:3)

您无法避免重置计时器,因为当页面重新加载时,所有HTML和JS都会重新加载。 您可以将当前时间存储在“cookie”中。查找“在Javascript中使用Cookie”。

工作流程如下

  1. 页面加载并启动计时器。
  2. 用户重新加载页面。
  3. 在Javascript中侦听onBeforeUnload(和onUnload)事件,并编写一个存储当前时间的cookie。
  4. 当页面重新加载时,请从cookie中读取此时间并使用它。
  5. 当计时器结束时,请务必清除cookie。

答案 1 :(得分:3)

简而言之:Cookie或AJAX(PHP)

AJAX计时器。让一个php页面“记住”学生的时间,javascript将告诉php扣除“秒”或者从存储时间中扣除多长时间。

或者,尝试使用cookie。

1)检查cookie是否存在

2)如果没有将cookie设置为从开始时间起5分钟后到期。    如果是,请检查Cookie是否已过期。

3)如果cookie过期,请显示“Time up”   如果没有,继续等待。

问题是Javascript可以从浏览器的地址栏运行,因此在安全的测试环境中不是一个好的选择。

答案 2 :(得分:2)

javascript中唯一可以在页面或页面刷新之间保留的东西是cookie。

您可以定期将Cookie值设置为剩余时间并在页面加载时检查它,并在该值为0时启动计时器。

答案 3 :(得分:2)

在PHP中做这样的事情:

<script type="text/javascript">
var remainingtime = <?php echo $remainingtime; /* remaining seconds */ ?>;
</script>

然后从JavaScript中你可以读取这个变量的值。

编辑:当然,如果时间合适,你必须检查服务器端,因为JavaScript值可能是伪造的。

答案 4 :(得分:1)

你不能。但是,你可以做另一件事,让我们说不那么客气:

使用ajax更新数据库,说明学生X已经开始考试,如果它刷新了页面,请读取该值并将其机会甩掉;)

答案 5 :(得分:1)

运行计时器服务器端并使用AJAX轮询它。