【问题标题】:Issue with Jquery Cookie/TimerJquery Cookie/计时器问题
【发布时间】:2012-04-30 00:49:23
【问题描述】:

我正在构建一个从 10 分钟开始倒计时的考试模拟器,当它到达 00:00 时,考试问题被隐藏,并且显示一个 div 显示“你的时间”,但如果我在浏览器上单击刷新,它会返回10:00 但我想要它做的是再次显示超时 div!我在下面玩了我的 jquery,但我看不出我哪里出错了,计时器存储在 cookie 中,所以如果用户在考试中的任何给定时间按下 f5,cookie 会从用户按下 f5 时开始倒计时!所以我的问题是,如果时间是 00:00,有人可以帮我修改下面的 JQuery 以显示超时的 div,即使用户刷新了浏览器也仍然显示。

   $(function () {
                $('.clock').each(function () {
                    var clock = $(this),
                    theTime = $.cookie('time'),
                    seconds = "00", minutes = 10;
                    if (theTime && theTime != "0:00") {
                        theTime = theTime.split(":")
                        minutes = theTime[0]
                        seconds = theTime[1]
                    }
                    $('.min', clock).text(minutes)
                    $('.sec', clock).text(seconds)
                    var timer = setInterval(function () {
                        var m = $('.min', clock), minutes = +m.text(),
                            s = $('.sec', clock), seconds = -1 + +s.text()
                        if (seconds < 0) {
                            seconds = 59
                            minutes--
                        } else if (minutes <= 0 && seconds <= 0) {
                            clock.html('Timer Complete.');
                            clearInterval(timer);
                            $.cookie('time', '', { expires: -1 })
                            $('#feedbackform').hide();
                            $('#MainContent_DivOutOfTime').toggle();
                            return;
                        }
                        seconds = seconds < 10 ? '0' + seconds : seconds
                        m.text(minutes)
                        s.text(seconds)
                        $.cookie('time', minutes + ":" + seconds, { expires: -1 })
                    },
                1000);
                });
            });

我尝试从代码中删除以下内容

 if (seconds < 0) {
   seconds = 59
   minutes--
 } else

这样它会检查时间然后显示 div 但无济于事!我还删除了 clearInterval...任何帮助将不胜感激

【问题讨论】:

  • 您从$.cookie("time") 获得的数据是否正确?
  • 正如您所意识到的,要击败您的基于 cookie 的系统,任何人所要做的就是手动清除 cookie、运行另一个浏览器、转到另一台计算机、在他们的计算机上创建一个不同的用户等...即使你让它工作,它也需要几秒钟才能绕过。
  • @jfriend00 阻止您提到的任何事情发生的最佳方法是什么?
  • 防止在基于 Web 的测试中作弊是一个很大的话题,但是您必须首先跟踪服务器上的时间和访问权限,因为用户不能像他们那样搞乱那里的状态饼干。
  • 好的,感谢您提供的信息,我有一个谷歌,看看我能想出什么

标签: jquery asp.net cookies timer


【解决方案1】:

这行不是清除 cookie 吗?尝试删除它。

$.cookie('time', '', { expires: -1 }) 

【讨论】:

  • 第一次进入函数 seconds = "00", minutes = 10;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多